蓝图
蓝图实现了应用的模块化,使用蓝图让应用层次清晰,开发者可以更容易的开发和维护项目。蓝图通常作用于相同的URL前缀,比如/user/:id、/user/profile这样的地址,都以/user开头,那么它们就可以放在一个模块中。
比如,在你的蓝图文件(user.py)中:
from flask import Blueprint
bp=Blueprint(‘user’,__name__,url_prefix=’/user’)
@bp.route(‘/’)
def index():
return “user index page.”
每个模块都会暴露一个全局变量bp。在主程序中:
from flask import Flask
from user import bp
app=Flask(__name__)
app.register_blueprint(bp)
if __name__==’__main__’:
app.run(host=’0.0.0.0’,port=9000)
使用register_blueprint注册模块,如果想去掉模块只需要去掉对应的注册语句即可。
其中,url_prefix是必选参数,这个参数必须以”/”开头,否则就会报错。
添加了这个参数之后,所有蓝图的路由都会以这个路由开头进行访问。
比如上例中,使用localhost:9000/user/
最终返回会返回 user index page.
相当于访问了@bp.route(‘/’)。
一般在项目中都是将蓝图放在一个单独的文件夹中,然后视图的注册类似网站的初始化操作。
静态文件
蓝图的第三个参数是static_folder。这个参数用来指定蓝图的静态文件所在的文件夹,它可以是一个绝对路径,也可以是相对路径。
bp=Blueprint(‘user’,__name__,static_folder=’static’)
默认情况下,路径最右端的部分是在URL中暴露的部分。这可以通过static_url_path来改变。上例中的文件夹为名称static,那么URL应该是蓝图的url_prefix加上/static。如果蓝图注册的前缀为/user,那么静态文件URL就是/user/static。
前端在使用时,是用blueprint_name.static。使用url_for()来生成其URL:
url_for(‘user.static’,filename=’style.css’)
如果没有url_prefix,那么不可能访问蓝图的静态文件夹。在这种情况下,URL应该是/static。