用途:在构建 Flask Web 应用或 API 时应用本技能,涉及路由、蓝图、扩展与测试。
项目结构:使用应用工厂模式 create_app() 避免全局状态并便于测试;按功能组织为 Blueprint 并在工厂中注册;配置放在 config.py,使用 DevelopmentConfig、ProductionConfig 等类。
路由与视图:优先使用显式 HTTP 方法装饰器(@app.get、@app.post),而非带 methods=[...] 的通用 @app.route;尽早校验请求数据,对格式错误输入在处理前返回 400;使用 flask.abort() 配合合适 HTTP 状态码,而非手动返回错误响应。
扩展:在工厂内用 ext.init_app(app) 延迟初始化扩展,而非模块级初始化。常见扩展:Flask-SQLAlchemy、Flask-Migrate、Flask-Login、Flask-WTF、Flask-CORS。
测试:用 app.test_client() 做 HTTP 级测试,用 app.test_request_context() 做单元测试;用 pytest fixtures 创建应用与客户端,作用域适当(应用用 session,客户端用 function);设置 TESTING=True 并使用独立测试数据库。
限制与陷阱:生产环境切勿使用开发服务器 app.run(),应使用 Gunicorn 或 uWSGI;避免在应用对象上存储可变状态,请求级数据用 g;切勿硬编码 SECRET_KEY,应从环境变量加载。