蓝图的基本使用
- 作用:为了进行模块化开发
- 特点:属于flask中自带的,不需要安装扩展就能使用
- 蓝图的使用流程:
1. 创建蓝图对象
2. 使用蓝图装饰视图函数
3. 将蓝图注册到app对象
示例:
user:
from flask import Blueprint
# 1.创建蓝图对象
user = Blueprint("user", __name__)
# 2.使用蓝图装饰视图函数
@user.route("/user_info")
def user_info():
return "user info"
product:
from flask import Blueprint
# 1.创建蓝图对象
product = Blueprint("product", __name__)
# 2.使用蓝图装饰视图函数
@product.route('/product_info')
def product_info():
return "product info"
blue:
from flask import Flask
from user import user
from product import product
app = Flask(__name__)
# 3.将蓝图注册到app对象中
app.register_blueprint(user)
app.register_blueprint(product)
@app.route('/')
def index():
return "hello world"
if __name__ == '__main__':
print(app.url_map)
app.run(debug=True)
以包的形式使用蓝图
- 作用:以包的形式管理使用蓝图,更加灵活
- 特点:每个蓝图可以有自己的模板文件,静态文件,配置文件等
示例:
创建如下图所示的层级结构:
init.py代码:
from flask import Blueprint
# 1.创建蓝图对象
user_blue = Blueprint("user", __name__)
# 导入views
from user import views
views.py代码:
from user import user_blue
# 2.装饰视图函数
@user_blue.route('/user_info')
def user_info():
return "user info"
blue_print.py代码:
from flask import Flask
from user import user_blue
app = Flask(__name__)
app.register_blueprint(user_blue)
@app.route('/')
def index():
return "hello world"
if __name__ == '__main__':
print(app.url_map)
app.run(debug=True)
- 注意点:views.py中的from user import views不能加到上方,会造成‘循环导包’问题。
- 循环导包:两个文件之间相互引用,并且引用的格式不正确,就会导致程序运行不了。python中运行循环导入,但是导入的结构要合理。
蓝图参数含义
- 参数1:name,表示蓝图的名字,用来标识蓝图装饰的视图函数所属的蓝图
- 参数2:import_name,一般固定写法写作__name__,表示的是蓝图所在包的名字
- 参数3:static_folder,用来存储静态文件的
- 参数4:url_prefix,给所用使用该蓝图装饰的视图函数都加上一个访问前缀
- 参数5:template_folder,表示蓝图自己的模板文件,如果app中也设置自己的模板,如果文件名相同,优先访问app的
示例:
user_blue = Blueprint("user", __name__, static_folder="static", url_prefix="/user", template_folder="templates")