Flask - Blueprints 蓝图 - 实现模块化应用

目录

一、 Blueprints 蓝图概念

二、手动模拟蓝图模块化项目结构 - 不使用蓝图

2-1 目录结构

2-2 manage,py执行文件

2-3 __init__,py文件

2-4 views视图文件夹下视图文件

三、蓝图的实现方式

3-0 蓝图使用总结

3-0-1 蓝图内的构造URL

3-1 中小型系统的蓝图使用

3-1-1 目录结构

3-1-2 视图函数内实例化蓝图对象

3-1-3 __init__,py内注册蓝图

3-1-4 manage,py 执行文件

3-2 大型系统的蓝图使用

3-2-1 目录结构

3-2-2 创建蓝图对象 - 在每个项目目录下的init文件内进行初始化操作

3-2-3 在总项目init文件内进行蓝图注册

3-2-4 项目目录下的执行文件


一、 Blueprints 蓝图概念

核心:对程序进行目录结构划分,实现模块化、解耦合。

Flask 用 蓝图(blueprints) 的概念来在一个应用中或跨应用制作应用组件和支持通用的模式。蓝图很好地简化了大型应用工作的方式,并提供给 Flask 扩展在应用上注册操作的核心方法。一个 Blueprint 对象与 Flask 应用对象的工作方式很像,但它确实不是一个应用,而是一个描述如何构建或扩展应用的 蓝图 。

Flask 中的蓝图不是即插应用,因为它实际上并不是一个应用——它是可以注册,甚至可以多次注册到应用上的操作集合。

蓝图作为 Flask 层提供分割的替代,共享应用配置,并且在必要情况下可以更改所注册的应用对象。它的缺点是你不能在应用创建后撤销注册一个蓝图而不销毁整个应用对象。

蓝图的基本设想是当它们注册到应用上时,它们记录将会被执行的操作。 当分派请求和生成从一个端点到另一个的 URL 时,Flask 会关联蓝图中的视图函数。

二、手动模拟蓝图模块化项目结构 - 不使用蓝图

!!!注意!!! 

!!!仅仅模拟蓝图实现思路,解释为何要使用蓝图实现模块化,无法实现蓝图的执行效果!!!

2-1 目录结构

-templates
-views
    -__init__.py
    -user.py
    -order.py
-manage.py - 项目执行文件

2-2 manage,py执行文件

# 导入views文件夹下__init__实例的Flask对象
from views import app
if __name__ == '__main__':
    app.run()

2-3 __init__,py文件

from flask import Flask,request
app = Flask(__name__)

# 必须导入,模拟蓝图注册,辅助manage执行文件内app.run()的执行
from . import account
from . import order
from . import user

2-4 views视图文件夹下视图文件

# user.py
from . import app
@app.route('/user')
def user():
    return 'user'

# order.py
from . import app
@app.route('/order')
def order():
    return 'order'

'''
!!!注意!!! 
存在严重的循环导入错误,程序无法执行,对views下的app对象重复导入。
'''

 

三、蓝图的实现方式

3-0 蓝图使用总结

  • xxx = Blueprint('ord
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值