之前我们写的url和视图函数都是处在同一个文件,如果项目比较大的话,这显然不是一个合理的结构,而蓝图可以优雅的帮我们实现这种需求。
蓝图
from flask import Blueprint, render_template
"""
def __init__(
self,
name,
import_name, # __name__
"""
book_bp = Blueprint('book', __name__)
# template_folder=None, 定义文件夹 定义和不定义寻找位置是不一样的
# 会有一个优先级 会先去templates里面找 如果没用才回去定义的文件夹里面去找
# 如果设置了这个属性就会在定义的文件里面找
# 如果没用定义就会返回到调用的页面去templates里面找
# 设置后会多出一个装html文件不是很好管理
@book_bp.route('/hello')
def book():
return render_template('/book.html')
@book_bp.route('/detail/<bid>')
def book_detail(bid):
return f'这是图书第{bid}页'
然后在运行文件中
from flask import Flask
from blueprints import book
app = Flask(__name__)
# 注册蓝图
app.register_blueprint(book.book_bp)
if __name__ == '__main__':
app.run(debug=True)
就这样蓝图就ok了
文件夹结构