A curated list of awesome python web development libraries.
>>> 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
# 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()