Flask-蓝图 blueprint详情

 更新时间:2021年11月26日 09:59:52   作者:tigeriaf  
这篇文章主要介绍了 Flask-蓝图 blueprint的相关资料,Blueprint 是一个存储视图方法的容器,这些操作在这个Blueprint 被注册到一个应用之后就可以被调用,Flask 可以通过Blueprint来组织URL以及处理请求,更多相关资料需要的小伙伴可以参考下面文章

前言:

我们的应用经常会有很多小模块,比如用户模块、后台管理模块等,虽然这些模块都在同一个应用中,但是功能大不相同,把他们放在同一个文件中,显得十分杂乱,不便于管理维护,那么有没有什么方法可以将模块分开管理呢?是有的!Flask 蓝图(Blueprint),它可以模块化管理路由,使用蓝图可以把不同模块的视图函数写在不同的py文件中,在主视图中导入分路由视图的模块,并注册蓝图对象,降低各个功能模块的耦合度使程序结构更加简单、清晰。

Flask使用Blueprint让应用实现模块化,在Flask中,Blueprint具有如下属性:

  • 一个项目可以具有多个Blueprint
  • 可以将一个Blueprint注册到任何一个未使用的URL下比如 “/”、“/sample”或者子域名
  • 在一个应用中,一个模块可以注册多次
  • Blueprint可以单独具有自己的模板、静态文件或者其它的通用操作方法,它并不是必须要实现应用的视图和函数的
  • 在一个应用初始化时,就应该要注册需要使用的Blueprint

1、蓝图的定义

蓝图就是用于实现单个应用的视图、模板、静态文件的集合。使用蓝图可以实现模块化应用的功能,有些类似于Django 中子应用 app

蓝图使用起来就像应用当中的子应用一样,可以有自己的视图、模板,静态文件等。多个蓝图之间互不影响,但是它们可以共享应用的全局变量、配置信息等。

1.1使用蓝图

使用flask.Blueprint定义蓝图,app.register_blueprint注册蓝图。

下面来具体介绍一下如何使用蓝图。

新建创建一个“user”子目录,并在该目录中新建一个 __init__.py 文件,在文件中,创建用户蓝图对象:

from flask import Blueprint

user_bp = Blueprint("user", __name__, url_prefix="/user")

创建了蓝图对象“user_bp”,Blueprint 的第一个参数user指定了这个蓝图的名称,第二个参数指定了该蓝图所在的模块名,这里是当前文件,第三个参数指定其 url 前缀。

然后编写视图文件 views.py,并编写视图函数:

from user import user_bp

@user_bp.route('/')

def index():

    return '<h1>Hello, this is user blueprint</h1>'

@user_bp.route('/add')

def add_user():

    return '<h1>add success!</h1>'

······

在视图函数上使用了蓝图对象“user_bp”,使用起来类似于 Flask app 对象,使用user_bp.route()指定路由。

然后在 __init__.py 文件末尾添加如下代码,导入视图函数。

from . import views

当然,也可以选择把 __init__.py 文件内创建蓝图对象“user_bp”的代码写在视图文件 views.py 中,__init__.py 文件置空。

最后,在应用主程序 app.py 中注册该蓝图,使用app.register_blueprint()方法即可:

app.register_blueprint(user_bp)

也可以在注册蓝图时指定其 url 前缀。

我们现在已经使用蓝图创建了用户模块,之后再添加其他模块,使用以上步骤添加即可。

到此这篇关于 Flask-蓝图 blueprint详情的文章就介绍到这了,更多相关 Flask 蓝图内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python中反射用法实例

    python中反射用法实例

    这篇文章主要介绍了python中反射用法,实例分析了Python中反射的原理与使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-03-03
  • 时间序列预测中的数据滑窗操作实例(python实现)

    时间序列预测中的数据滑窗操作实例(python实现)

    滑动窗口操作非常普遍,非常有用,它们也很容易在Python中实现,下面这篇文章主要给大家介绍了关于时间序列预测中的数据滑窗操作python实现的相关资料,需要的朋友可以参考下
    2022-03-03
  • Python人工智能语音合成实现案例详解

    Python人工智能语音合成实现案例详解

    这篇文章主要为大家介绍了Python人工智能语音合成实现案例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • Python实现base64编码的图片保存到本地功能示例

    Python实现base64编码的图片保存到本地功能示例

    这篇文章主要介绍了Python实现base64编码的图片保存到本地功能,涉及Python针对base64编码解码与图形文件输出保存相关操作技巧,需要的朋友可以参考下
    2018-06-06
  • Python __slots__的使用方法

    Python __slots__的使用方法

    这篇文章主要介绍了Python __slots__的使用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-11-11
  • Python FTP操作类代码分享

    Python FTP操作类代码分享

    这篇文章主要介绍了Python FTP操作类,实现自动下载、自动上传,并可以递归目录操作,需要的朋友可以参考下
    2014-05-05
  • Django 如何获取前端发送的头文件详解(推荐)

    Django 如何获取前端发送的头文件详解(推荐)

    这篇文章主要介绍了Django 如何获取前端发送的头文件,先需要导入一个类再通过request.environ来获取,具体操作可查看下文,需要的朋友可以参考下
    2017-08-08
  • 对python:print打印时加u的含义详解

    对python:print打印时加u的含义详解

    今天小编就为大家分享一篇对python:print打印时加u的含义详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • pycharm激活方法到2099年(激活流程)

    pycharm激活方法到2099年(激活流程)

    这篇文章主要介绍了pycharm激活方法到2099年,文末给大家提到了idea和pycharm最新版激活方法,非常不错对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-09-09
  • Python如何实现Excel的最合适列宽(openpyxl)

    Python如何实现Excel的最合适列宽(openpyxl)

    这篇文章主要介绍了Python如何实现Excel的最合适列宽(openpyxl),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-02-02

最新评论