flask-蓝图的作用和使用

什么是蓝图Blueprint

一个应用中或跨应用制作应用组件和支持通用的模式
讲个小故事:
在这里插入图片描述
一个集团底下有三个子公司分别命名为A、B、C
这个地方集团就相当于flask中的app
那么A、B、C就相当于蓝图
A是科技公司
B是运输公司
C是文化公司
蓝图所能提供功能是可以通过集团-子公司找对于的公司的产品。当然你也可以不通过蓝图,可以从科技公司找到文化产品比如周边产物,但是这样很难受啊,一点都不规范。
那使用了蓝图之后相当于明确了组织架构,将整个集团底下的子公司的组织架构在做划分,以及子公司的产出做了说明。那在我集团需要用到子公司资源的时候可以直接使用的子公司的资源。

蓝图的作用

  1. 将不同的功能模块化
    a.一个项目可以具有多个Blueprint
    b. 可以将一个Blueprint注册到任何一个未使用的URL下比如 “/”、“/sample”或者子域名
    c. 在一个应用中,一个模块可以注册多次
    d.Blueprint可以单独具有自己的模板、静态文件或者其它的通用操作方法,它并不是必须要实现应用的视图和函数的
    e.在一个应用初始化时,就应该要注册需要使用的Blueprint
  2. 构建大型应用
  3. 优化项目结构
  4. 增强可读性、易于维护

运行机制

  1. 蓝图是保存了一组将来可以在应用对象上执行的操作,注册路由就是一种操作
  2. 当在app对象上调用 route 装饰器注册路由时,这个操作将修改对象的url_map路由表
  3. 然而,蓝图对象根本没有路由表,当我们在蓝图对象上调用route装饰器注册路由时,它只是在内部的一个延迟操作记录列表defered_functions中添加了一个项
  4. 当执行app对象的 register_blueprint() 方法时,应用对象将从蓝图对象的 defered_functions 列表中取出每一项,并以自身作为参数执行该匿名函数,即调用应用对象的 add_url_rule() 方法,这将真正的修改应用对象的usr_map路由表

使用蓝图的步骤

1、定义蓝图创建一个蓝图的包,并在__init__.py文件中创建蓝图对象(app/admin/init.py)

from flask import Blueprint

admin = Blueprint("admin", __name__)
import app.admin.views

2、在这个蓝图目录下, 创建views.py文件,保存当前蓝图使用的视图函数(app/admin/views.py)

from . import admin
@admin.route("/")
def index():
    return "<h1 style='color:red'>this is admin</h1>"

3、注册蓝图,(app/init.py)

from app.home import home as home_blueprint
from app.admin import admin as admin_blueprint

app.register_blueprint(home_blueprint)
app.register_blueprint(admin_blueprint, url_prefix="/admin")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值