今天我们来说说Python主流Web框架之一的Flask中的Blueprint(蓝图)。
我们在写django项目时,如果两个模块基本没什么联系,那我们一般会选择新建两个app去分开写,这样会时项目结构更清晰。
那么在Flask中有没有类似的东西呢?当然有,那就是Blueprint(个人认为,未经查证)
Blueprint 是一个存储视图方法的容器,视图方法经过Blueprint被注册到一个应用之后就可以被调用,Flask可以通过Blueprint来组织URL以及处理请求。
Flask使用Blueprint让应用实现模块化,在Flask中,Blueprint具有如下属性:
-
一个项目中可以有多个Blueprint,它们互不冲突
-
可以将一个Blueprint注册到任何一个未使用的URL下比如 “/”、“/sample”以及其他任何路径中
-
在一个应用中,一个模块可以注册多次
-
Blueprint可以单独具有自己的模板、静态文件或者其它的通用操作方法,它并不是必须要实现应用的视图和函数的
-
在一个应用初始化时,就应该要注册需要使用的Blueprint
但是,有一个需要注意的点,一个Blueprint其实并不是一个完整的应用,它不能独立于应用运行,而必须要注册到某一个应用中。
Blueprint对象用起来和一个app/Flask对象差不多,最大的区别在于一个Blueprint对象没有办法独立运行,必须将它注册到一个应用对象上才能生效
创建蓝图一般分为如下四个步骤:
1、创建一个蓝图的包
例如在项目目录下创建一个article包,并在__init__.py文件中创建蓝图对象
from flask import Blueprint
# 等同于原来在 app.py里面的 app = Flask()
article = Blueprint('article',__name__)
2、创建views.py文件
在这个蓝图目录下创建views.py文件,里面放置这个蓝图所用的视图函数
3、引入视图函数
在article/init.py中引入views.py中所有的视图函数
from .views import *
4、在项目主应用文件中注册Blueprint
在主应用app.py文件中的app对象上注册这个article Blueprint对象
from article import article
app.register_blueprint(article,url_prefix='/article')
当启动应用后,通过/article/*可以访问到Blueprint中定义的视图函数
Flask Python版权声明:如无特殊说明,文章均为本站原创,转载请注明出处
本文链接:https://www.yangyingqi.com/33.html