Flask Guide

Quick Start

pip install flask # app.py from flask import Flask, request, jsonify, g from functools import wraps app = Flask(__name__) app.config['SECRET_KEY'] = 'dev-secret' @app.route('/') def index(): return 'Hello, World!' @app.route('/users/<int:user_id>', methods=['GET']) def get_user(user_id): user = User.query.get_or_404(user_id) return jsonify(user.to_dict()) @app.route('/users', methods=['POST']) def create_user(): data = request.get_json() # ... return jsonify(new_user.to_dict()), 201 if __name__ == '__main__': app.run(debug=True)

Blueprints

# blueprints/users.py from flask import Blueprint users_bp = Blueprint('users', __name__, url_prefix='/users') @users_bp.route('/') def list_users(): return 'User list' # Register blueprint from blueprints.users import users_bp app.register_blueprint(users_bp)

Context & Hooks

@app.before_request def load_user(): token = request.headers.get('Authorization') g.user = verify_token(token) if token else None @app.after_request def add_headers(response): response.headers['X-Content-Type-Options'] = 'nosniff' return response @app.errorhandler(404) def not_found(e): return jsonify(error='Not found'), 404 # Application context with app.app_context(): db.create_all()

Common Extensions

ExtensionPurpose
Flask-SQLAlchemyORM integration
Flask-MigrateDB migrations (Alembic)
Flask-JWT-ExtendedJWT authentication
Flask-MarshmallowSerialization
Flask-CachingResponse caching
Flask-CORSCross-origin support