flask中蓝图使⽤以及多蓝图使⽤
模块化
随着flask程序越来越复杂,我们需要对程序进⾏模块化的处理,之前学习过python的模块化管理,于是针对⼀个简单的flask程序进⾏模块化处理
简单来说,Blueprint 是⼀个存储视图⽅法的容器,这些操作在这个Blueprint 被注册到⼀个应⽤之后就可以被调⽤,Flask 可以通过Blueprint来组织URL以及处理请求。
Flask使⽤Blueprint让应⽤实现模块化,在Flask中,Blueprint具有如下属性:
⼀个项⽬可以具有多个Blueprint
可以将⼀个Blueprint注册到任何⼀个未使⽤的URL下⽐如 “/”、“/sample”或者⼦域名
在⼀个应⽤中,⼀个模块可以注册多次
Blueprint可以单独具有⾃⼰的模板、静态⽂件或者其它的通⽤操作⽅法,它并不是必须要实现应⽤的视图和函数的
在⼀个应⽤初始化时,就应该要注册需要使⽤的Blueprint
但是⼀个Blueprint并不是⼀个完整的应⽤,它不能独⽴于应⽤运⾏,⽽必须要注册到某⼀个应⽤中。
Blueprint对象⽤起来和⼀个应⽤/Flask对象差不多,最⼤的区别在于⼀个 蓝图对象没有办法独⽴运⾏,必须将它注册到⼀个应⽤对象上才能⽣效
使⽤蓝图可以分为四个步骤
⽬录:
1.创建蓝图对象:article⽬录下的__init__.py⽂件内容
from flask import Blueprint
article = Blueprint("article", __name__)
from .views import * #使注册的蓝图可以到views下⾯的路由
2.article⽂件下views⽂件写⼊路由
from . import article #蓝图引⽤进来
@ute('/detail', methods=['GET', 'POST'])
def detail():
return 'detail'
3.manager⽂件中注册蓝图
from flask import Flask
from app.user import app_goods
from app.article import article
#循环引⽤,解决⽅法,推迟⼀⽅的导⼊,让例外⼀⽅完成
app = Flask(__name__)
flask下载#注册蓝图(注册goods模块下的蓝图对象,就可以访问相应的路径)ister_blueprint(app_goods,url_prefix='/goods_route')
@ute('/')
def index():
return "index page"
if __name__ == '__main__':
print(app.url_map)
app.run(host='0.0.0.0', debug=True)
4、运⾏命令:
python manager.py runserver
5、若需要在本蓝图中访问其他蓝图的路径,可转发其他蓝图的⽅法user⽂件中的__init__.py 和 views.py 代码如下
from flask import Blueprint
app_goods = Blueprint("app_goods", __name__)
from .views import *
from flask import Blueprint,redirect,url_for
#创建⼀个蓝图的对象,蓝图是⼀个⼩模块抽象的概念from . import app_goods
from app.article import article
@ute('/goods', methods=['GET', 'POST']) def goods():
return 'goods page'
@ute('/hu')
def hu(): #重定向到其他蓝图的路径⽅法
return redirect(url_for('article.detail'))
会转发到article蓝图中
注:⼤家喜欢点个赞哦~
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论