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-SQLAlchemy | ORM 集成 |
| Flask-Migrate | 数据库迁移 |
| Flask-JWT-Extended | JWT 认证 |
| Flask-Marshmallow | 序列化 |
| Flask-Caching | 响应缓存 |
| Flask-CORS | 跨域支持 |