Flask使用指南

快速入门

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 '你好,世界!' @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/users.py from flask import Blueprint users_bp = Blueprint('users', __name__, url_prefix='/users') @users_bp.route('/') def list_users(): return '用户列表' # 注册蓝图 from blueprints.users import users_bp app.register_blueprint(users_bp)

上下文和钩子

@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 # 应用上下文 with app.app_context(): db.create_all()

常用扩展

扩展用途
Flask-SQLAlchemyORM 集成
Flask-Migrate数据库迁移
Flask-JWT-ExtendedJWT 认证
Flask-Marshmallow序列化
Flask-Caching响应缓存
Flask-CORS跨域支持