flask之蓝图

一:蓝图的作用

将视图函数按照功能进行划分,让不同的模块的视图函数,在不同的文件进行管理,也方便大家进行开发,要不然大家都给同时修改app.py文件。

不进行划分的样子

app.py

from flask import Flask
app = Flask(__name__)

@app.route("/index")
def index():
    return "index_page"

@app.route("/login")
def login():
    return "login_page"

@app.route("/register")
def resigter():
    return "register_page"

...........................
# 一个项目会有多个功能,完整的写完,这里面需要写很多个视图,管理起来非常麻烦

if __name__ == "__main__":
    app.run(debug=True)    

 

二:蓝图的使用

(1)创建蓝图对象

from flask import Blueprint
user = Blueprint("user蓝图的别名"__name__# "user蓝图的别名",在url_for的时候会使用到。

 

(2)蓝图对象装饰视图函数

@user.route("/login")
def login():
    return "login_page"

 

(3)对蓝图进行注释

# 为了让 url_map识别蓝图,注册后会在url_map看到视图函数和路径的对应关系
from xxxx import user
app.resigter_blueprint(user)

 

app.py

from flask import Flask
from blue_print_sutudy.blueprint_config import user_module_blueprint
app = Flask(__name__)
print(app.url_map)
app.register_blueprint(user_module_blueprint)
print(app.url_map)
if __name__ == '__main__':
    app.run(debug=True,host="0.0.0.0",port=8888)


# 结果
注册前:Map([<Rule '/static/<filename>' (HEAD, GET, OPTIONS) -> static>]) 
注册后:Map([<Rule '/user/login' (HEAD, GET, OPTIONS) -> user_module_blueprint.login>,
 <Rule '/static/<filename>' (HEAD, GET, OPTIONS) -> static>])

 

blueprint_config.py

from flask import Blueprint
user_module_blueprint = Blueprint("user_module_blueprint",__name__)


@user_module_blueprint.route("/user/login")
def login():
    return "login_page"

三:蓝图的在项目中的使用

goods_module.__init__.py

from flask import Blueprint
goods_module_blueprint = Blueprint("goods_module_blueprint",__name__)
from .view import * # 作用是为了进入view里,从上到下执行一遍代码

 

goods_module.view.py

from . import goods_module_blueprint

@goods_module_blueprint.route("/goods/img")
def goods_img():
    return "goods_img"

@goods_module_blueprint.route("/goods/price")
def goods_price():
    return "goods_price"

 

app.py

from flask import Flask
# 导包,其实就是去找__init__.py执行里面的代码,因此__all__=[名字1,名字2,名字3],就是能够识别这个包下的所有文件
from blue_print_sutudy.goods_module import goods_module_blueprint from blue_print_sutudy.user_module import user_module_blueprint app = Flask(__name__) app.register_blueprint(user_module_blueprint) app.register_blueprint(goods_module_blueprint) if __name__ == '__main__': app.run(debug=True,host="0.0.0.0",port=8888)

 

 

 

 

 

 

 

 

 

 

 

# TODO

posted @ 2020-04-04 17:02  张京墨  阅读(167)  评论(0编辑  收藏  举报