Skip to content

A curated list of awesome python web development libraries.

Notifications You must be signed in to change notification settings

c-bata/awesome-python-webapps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 

Repository files navigation

awesome-python-webapps

A curated list of awesome python web development libraries.

Awesome common libraries

Databases

Authentication

>>> from werkzeug.security import generate_password_hash, check_password_hash
>>> password_hash = generate_password_hash('my password')
>>> check_password_hash(password_hash, 'my password')
True
>>> check_password_hash(password_hash, 'this is not my password')
False
>>> import jwt
>>> from datetime import datetime, timedelta
>>> payload = {
...     'user_id': 1,
...     'iat': datetime.utcnow(),
...     'exp': datetime.utcnow() + timedelta(days=1)
... }
>>> token = jwt.encode(payload, 'SECRET_KEY')
>>> token
b'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJleHAiOjE0NDY4NzczNjIsImlhdCI6MTQ0Njc5MDk2Mn0.JVjdlg_0lxDtl4AqHRpiC4Gpv1hkB57g5dsIyWJmnF4'
>>> token.decode('unicode_escape')
'eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxLCJleHAiOjE0NDY4NzczNjIsImlhdCI6MTQ0Njc5MDk2Mn0.JVjdlg_0lxDtl4AqHRpiC4Gpv1hkB57g5dsIyWJmnF4'

>>> jwt.decode(token, 'SECRET_KEY')
{'user_id': 1, 'exp': 1446877362, 'iat': 1446790962}
>>> jwt.decode(token, verify=False)
{'user_id': 1, 'exp': 1446877362, 'iat': 1446790962}
>>> from itsdangerous import TimedJSONWebSignatureSerializer as Serializer

>>> s = Serializer('SECRET_KEY', expires_in=3600)
>>> token = s.dumps({'id': 1}).decode('utf-8')
>>> token
'eyJleHAiOjE0NDY3OTYwMTQsImFsZyI6IkhTMjU2IiwiaWF0IjoxNDQ2NzkyNDE0fQ.eyJpZCI6MX0.2d2h08XCqbMOgZw918jFRf2lJH_9QQwrQrJp5CnpbSI'

>>> s = Serializer('SECRET_KEY')
>>> s.loads(token)
{'id': 1}
>>> s.loads('dummy.token')
Traceback (most recent call last):
  :
  :
itsdangerous.BadSignature: Signature b'token' does not match

Awesome Django libraries

Awesome flask libraries

Databases

Utils

Profiling

# api/__init__.py
@app.after_request
def after_request(response):
    for query in get_debug_queries():
        if query.duration >= app.config['SLOW_DB_QUERY_TIME']:
            app.logger.warning(
                'Slow query: %s\nParameters: %s\n'
                'Duration: %fs\nContext: %s\n'
                % (query.statement, query.parameters,
                   query.duration, query.context)
            )
    return response
# manage.py
@manager.command
def profile(length=25):
    """Start the application under the code profiler."""
    from werkzeug.contrib.profiler import ProfilerMiddleware
    app.wsgi_app = ProfilerMiddleware(app.wsgi_app, restrictions=[length])
    app.run()

About

A curated list of awesome python web development libraries.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published