Flask蓝图(Blueprint) 的简单使用

2020年4月7日 22:44 阅读 2.15k 评论 0

今天我们来说说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中定义的视图函数

最后修改于2020年4月7日 22:44
©允许规范转载

版权声明:如无特殊说明,文章均为本站原创,转载请注明出处

本文链接:https://www.yangyingqi.com/33.html

Flask Python
微信
支付宝
登录后即可进行评论/回复