切换主题
二、蓝图
一、基本使用
这里以用户模块为例,注册一个蓝图
python
from flask import Blueprint
bp = Blueprint('user',__name__,url_prefix='/user')
@bp.route('/list')
def user_list():
return "用户列表"
@bp.route('/profile/<user_id>')
def user_profile(user_id):
return "用户简介"
首先从flask中导入了Blueprint
类,然后使用该类初始化一个对象在初始化这个对象时传递了3个参数,3个参数的说明如下:
(1)蓝图名称:第1个参数是蓝图的名称,在使用url_for
反转蓝图中的某个视图时,需要用到蓝图名.视图名
,如反转user_list
,则代码为 url_for("user.user_list")
。
(2)模块名:第2个参数是模块名,一般设置为__name_
,用于寻找模板文件和静态文件。
(3)URL前缀:第3个参数是URL 前缀,以后访问这个蓝图的所有 URL,都必须加上user
前缀,如获取用户列表的URL为/user/list
。
python
from user import bp as user_bp
...
app.register_blueprint(user_bp)
二、寻找模板
在蓝图中渲染模板,默认会从项目根路径下的templates 文件夹中寻找
如果想要更换寻找路径,可以在初始化
Blueprint
对象时,通过传递template_folder
参数实现
python
bp=Blueprint('user',name_,url_prefix='/user',template_folder='templates')
这样以后在渲染模板文件时,如return render_template("user.html"),
默认就会从项目的根路径下的templates文件夹中寻找user.html,如果没有找到,则再从蓝图所在的文件夹下的 templates 文件夹中寻找
三、寻找静态文件
默认是不设置任何静态文件路径的,Jinja2会在项目根路径下的static 文件夹中寻找静态文件。
在初始化 Blueprint 对象时,通过static_folder
参数可以指定静态文件的路径
python
bp=Blueprint('user', __name__,url_prefix='/user',static_folder 'static')
static_folder
可以是相对路径(相对蓝图文件所在的目录),也可以是绝对路径
在配置完蓝图后,还需要注意如何在模板中引用静态文件。在模板中引用蓝图,应该使用蓝图名.static
的格式来引用
python
<link href="{{ url for('user.static',filename='about.css')}}"></link>