Flask蓝图的使用
Flask蓝图的使用
RandomEnch前言
最近编写了一个Flask应用,其API接口路由数量较多,为了方便管理和分组接口代码,使用了Flask的蓝图功能,在此处做一个记录。
蓝图介绍
Flask 的蓝图(Blueprints)允许你将 Flask 应用分解成多个模块。这样可以更好地组织应用逻辑,使得应用更具可维护性和可扩展性。
每个蓝图可以有自己的路由、视图函数、模板和静态文件,这样可以将相关的功能分组。
通过使用蓝图,你可以将 Flask 应用拆分成多个模块,每个模块处理相关的功能,使得代码更加清晰和易于管理。
创建蓝图
创建蓝图涉及到以下几个步骤:
定义蓝图:在一个独立的模块(文件)中定义蓝图。
注册蓝图:在主应用中注册蓝图,使其生效。
项目结构
因为我的项目需求为纯API请求,不需要模板文件,因此选择直接将蓝图放在routes
文件夹下
1 | app/ |
定义蓝图
以index.py
中的内容为例
Blueprint('index_bp', __name__)
:创建一个名为 index_bp
的蓝图。
蓝图中定义的路由函数可以用来处理请求。
1 | from flask import Blueprint, jsonify, request |
注册蓝图
在app.py
中注册蓝图,使其生效。
1 | from flask import Flask |
启动应用,访问http://localhost:5000/
,可以看到返回的结果为{'code': '500', 'error': 'Method not allowed'}
,说明蓝图注册成功。
如果需要为蓝图添加前缀,可以修改index_bp
的构造函数,添加url_prefix
参数。
1 | index_bp = Blueprint('index_bp', __name__, url_prefix='/index') |
这样,访问http://localhost:5000/index/
时,会返回{'code': '500', 'error': 'Method not allowed'}
。
在蓝图中使用钩子
蓝图支持请求钩子,例如 before_request
和 after_request
,可以在蓝图中定义这些钩子来处理请求和响应。
1 | # 在蓝图中使用请求钩子,添加跨域支持 |
使用蓝图中的模板和静态文件
蓝图可以包含模板文件和静态文件,可以将相关的功能分组,并在蓝图中使用。
1 | app/ |