1.什么是蓝图
对蓝图的理解相对通俗,就是觉得蓝图对于视图方法模块化,大项目协同开发过程中的一个很好的工具
专业说法:一个蓝图定义了可用于单个应用的视图,模板,静态文件等等的集合。
2.如何使用蓝图
这里我们定义两个路由,6个视图,分别对应两个不同路由的三个功能
@app.route(’/admin/add/’)
@app.route(’/admin/show/’)
@app.route(’/admin/index/’)
@app.route(’/user/show/’)
@app.route(’/user/add/’)
@app.route(’/user/index/’)
蓝图的杀手锏是将你的应用组织成不同的组件,比如把这里的admin,user相关的视图方法分为两个组件,一个是admin组件,一个是user组件。这时我们可以创建两个蓝图实现这两个独立的组件。
admin组件中创建蓝图
- admin
- forms.html
- views.py
- static
- css
- js
- templates
- index.html
要想创建一个蓝图对象,你需要import flask.Blueprint( )类并用参数name和import_name初始化。import_name通常用__name__,一个表示当前模块的特殊的Python变量,作为import_name的取值。
admin=Blueprint( 'admin',__name__)
3.如何整合多个蓝图
这里分别给app注册了两个蓝图admin,user
参数url_prefix=‘/xxx‘的意思是设置request.url中的url前缀,
即当request.url是以/admin或者/user的情况下才会通过注册的蓝图的视图方法处理请求并返回
app.register_blueprint (admin,url_prefix='/admin' )
app.register_blueprint (user,url_prefix='/user' )
3.蓝图具体应用
在分路由, book.py
from flask import Blueprint
api = Blueprint('api', __name__)
定义蓝图
@api.route('/', methods=['GET'])
def get_book():
return 'get_book'
定义分路由及路由方法
在程序控制文件(主文件)
from app.api.v1.book import api
app = Flask(__name__)
app.register_blueprint(api,url_prefix='/ha')
注册蓝图,设置前缀 url
if __name__ == '__main__':
app.run(debug=True)
前缀 url 是在路由前加的
如,本次的访问路由为
127.0.0.1:5000/ha/
先走前缀 url 再走定义路由,前缀 url 可为空