蓝图:
flask自带的模块,容器,存储了一组将来在程序上执行的操作,不能独立运行。可以有自己的静态文件和模板等;
类似于django中的子应用;
蓝图多文件使用:容易发生循环导入的问题
除了最基本的三步以外,必须把使用蓝图对象的视图文件,导入到创建蓝图对象的文件中
蓝图最简单案例-三步
from flask import Flask,Blueprint
# 蓝图使用步骤
#1 创建蓝图对象
#2 定义蓝图路由
#3 注册蓝图对象
app = Flask(__name__)
#1 创建蓝图对象
bp = Blueprint('bp',__name__)
#2 定义蓝图路由
@bp.route("/users")
def get_user():
return 'users ..'
@app.route("/")
def index():
return "hi"
#3 注册蓝图对象
app.register_blueprint(bp)
if __name__ == '__main__':
print(app.url_map)
app.run(debug=True)
多文件蓝图注意import导包死锁
目录结构:
不能同时互相导入对方的包,就像夹菜俩人一起夹菜,谁也没夹起来……程序报错importErro……
多文件在ini的py文件创建蓝图。在类的py文件写route路由(定义蓝图路由)。在调用的时候注册蓝图。启动后可以使用
多文件使用,必须把使用蓝图对象的视图文件,导入到创建蓝图对象的文件中
init.py
from flask import Blueprint
#创建蓝图
news_bp = Blueprint('news_bp',__name__)
#必须把使用蓝图对象的视图文件,导入到创建蓝图对象的文件中
from . import views
views.py
from . import news_bp
@news_bp.route("/news")
def get_news():
return "news demo .."
@news_bp.route("/user")
def get_user():
return "user 666"
bluePrint.py
from flask import Flask,Blueprint
app = Flask(__name__)
from news import news_bp
#注册蓝图对象
app.register_blueprint(news_bp)
@app.route("/")
def index():
return 'hi'
if __name__ == '__main__':
print(app.url_map)
app.run(debug=True)
效果图: