蓝图就是将flask程序进行模块化处理。
蓝图分为3个步骤:
(1)初始化蓝图
(2)使用蓝图去注册路由url
(3)把蓝图注册到app上
1.对单个文件进行蓝图划分
共有启动文件manage.py:
代码如下:
from flask import Flask from order import order_blu app=Flask(__name__) # 3.把蓝图注册到app上 app.register_blueprint(order_blu) @app.route("/") def index(): return "index" if __name__ == '__main__': # 存储当前Flask下面都有哪些路由和视图函数 print(app.url_map) app.run(debug=True)
order.py文件代码如下:
from flask import Blueprint # 1.初始化蓝图 order_blu=Blueprint('order',__name__) # 使用蓝图去注册路由url @order_blu.route("/order/list") def user_order(): return "订单列表"
manage.py是一个程序入口,用于启动程序,而order.py是一个功能模块,当这个功能模块做好后,需要将这个模块进行合并,就需要用到蓝图,首先要想让这个功能合并到整个项目中,步骤如下:
(1)在单独模块中导入蓝图from flask import Blueprint
(2)初始化蓝图:order_blu=Blueprint("order",__name__) ,这个就类似于主程序入口的app=Flask(__name__)
(3)使用蓝图去注册路由url:相当于写视图函数
@order_blu.route("/order/list")
def order_list():
pass
(4)将蓝图注册到app上:首先就是导入order.py文件:from order import order_blu,其次app.register_blueprint(order_blu)
================================================================================================
2.使用模块进行蓝图划分
独立模块cart
(1)独立模块下要有__init__.py文件,views.py。
在__init__.py主要用于导模块,在这个文件里初始化蓝图,定义静态文件夹,渲染模板文件夹等
from flask import Blueprint cart_blu=Blueprint('cart',__name__,static_folder="static",template_folder="templates",url_prefix="/demo") from .views import *
所有的视图函数都在views.py文件里
from flask import render_template from . import cart_blu @cart_blu.route("/demo") def index(): return render_template("cart_index.html")
当写好视图函数后将蓝图注册到程序入口manage.py
from flask import Flask from cart import cart_blu app=Flask(__name__) # 3.把蓝图注册到app上 app.register_blueprint(cart_blu) @app.route("/") def index(): return "index" if __name__ == '__main__': # 存储当前Flask下面都有哪些路由和视图函数 print(app.url_map) app.run(debug=True)
这时候就完成了蓝图注册合并。