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 #蓝图引用进来 
@article.route('/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__)
#注册蓝图(注册goods模块下的蓝图对象,就可以访问相应的路径)
app.register_blueprint(app_goods,url_prefix='/goods_route')
app.register_blueprint(article,url_prefix='/article_route')


@app.route('/')
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

访问:http://0.0.0.0:5000/article_route/detail

 

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

@app_goods.route('/goods', methods=['GET', 'POST'])
def goods():
    return 'goods page'


@app_goods.route('/hu')
def hu():   #重定向到其他蓝图的路径方法
    return redirect(url_for('article.detail'))

访问:http://0.0.0.0:5000/goods_route/hu

会转发到article蓝图中

 

注:大家喜欢点个赞哦~

 

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值