Flask-蓝图 blueprint详情

目录
  • 1、蓝图的定义
    • 1.1使用蓝图

前言:

我们的应用经常会有很多小模块,比如用户模块、后台管理模块等,虽然这些模块都在同一个应用中,但是功能大不相同,把他们放在同一个文件中,显得十分杂乱,不便于管理维护,那么有没有什么方法可以将模块分开管理呢?是有的!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 蓝图内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • flask中使用蓝图将路由分开写在不同文件实例解析

    本文的内容主要是flask中使用蓝图将路由分开写在不同文件的相关介绍,具体如下. Flask 用 蓝图(blueprints) 的概念来在一个应用中或跨应用制作应用组件和支持通用的模式.蓝图很好地简化了大型应用工作的方式,并提供给 Flask 扩展在应用上注册操作的核心方法.一个Blueprint 对象与Flask 应用对象的工作方式很像,但它确实不是一个应用,而是一个描述如何构建或扩展应用的蓝图 . Flask 中的蓝图为这些情况设计: 把一个应用分解为一个蓝图的集合.这对大型应用是理想的.一

  • flask框架蓝图和子域名配置详解

    本文实例讲述了flask框架蓝图和子域名配置.分享给大家供大家参考,具体如下: 蓝图 在flask项目中,我们所有的url和视图函数都写在一个文件app.py中,但是当我们的项目大起来之后,这显然就不是一个合理的结构了.而蓝图就可以优雅的帮我们实现这个需求,对我们的项目进行分块. 比如现在的豆瓣网,https://www.douban.com/,他分为好几个模块. 有读书,电影,音乐,同城,FM等模块,假设我们也需要实现一个类似的网站,用过Django框架的朋友都知道,可以给每个模块新建一个ap

  • 一次python-flask蓝图的踩坑记录

    目录 一.简介 二.特色 三.flask规模化 四. flask Blueprint 总结 一.简介 Flask是一个使用Python编写的轻量级Web应用框架.基于Werkzeug WSGI工具箱和Jinja2 模板引擎.Flask使用BSD授权. Flask被称为"microframework",因为它使用简单的核心,用extension增加其他功能.Flask没有默认使用的数据库.窗体验证工具.然而,Flask保留了扩增的弹性,可以用Flask-extension加入这些功能:O

  • Flask框架响应、调度方法和蓝图操作实例分析

    本文实例讲述了Flask框架响应.调度方法和蓝图操作.分享给大家供大家参考,具体如下: 响应 像现在大部分的互联网应用用的数据传输格式都是JSON,当用户访问一个URL,我们如何通过Flask返回JSON的响应: 普通做法: @app.route("/") def showInfo(): return jsonify({"name":"老王","age":18}) 当我们的应用有大量的URL时,我们需要每次都用jsonify转

  • Flask-蓝图 blueprint详情

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

  • Flask  request 对象详情

    目录 1.request请求对象 1.1request请求对象的使用 前言: 一个完整的 HTTP 请求,包括客户端向服务端发送的 Request 请求和服务器端发送的 Response 响应.为了能方便的访问获取请求及响应报文信息,Flask 框架提供了一些内建对象,下面就来说一下 Flask 针对请求提供的内建对象request. 1.request请求对象 request请求对象封装了从客户端发来的请求报文信息,我们能从request对象上获取请求报文中的所有数据. 其大部分功能是由依赖包

  • Flask蓝图学习教程

    目录 前序 1.蓝图 2.蓝图介绍 一.创建蓝图包 二.使用步骤 1.在初始化__init_.py 文件创建蓝图 2.创建视图函数文件 3.调用问题 4.访问静态文件 总结 前序 1.蓝图 在一个Flask 应用项目中,如果业务视图过多,可否将以某种方式划分出的业务单元单独维护,将每个单元用到的视图.静态文件.模板文件等独立分开? 例如从业务角度上,可将整个应用划分为用户模块单元.商品模块单元.订单模块单元,如何分别开发这些不同单元,并最终整合到一个项目应用中? 2.蓝图介绍 在Flask中,使

  • Flask  response 对象详情

    在 Flask 中,响应使用 Response 对象表示,响应报文中的大部分内容由服务器处理,一般情况下,我们只负责返回主体内容即可.在之前的文章中,我们了解到 Flask 会先匹配请求 url 的路由,调用对应的视图函数,视图函数的返回值构成了响应报文的主体内容. 如果视图函数只返回一个元素的话,Flask 会创建 Response 对象,Response将该返回值作为主体内容,状态码默认为200,MIME 的类型为text/html,然后返回该 Response 对象. 其实视图函数可以返回

  • Flask 数据库迁移详情

    目录 1.使用 Flask-Migrate 实现数据库迁移 2.Flask-Migrate的使用 2.1 数据库的迁移过程 2.1.1 创建迁移环境 2.1.2 生成迁移脚本 2.1.3 更新数据库 3.总结 1.使用 Flask-Migrate 实现数据库迁移 db.create_all()不会重新创建表或是更新表,需要先使用db.drop_all()删除数据库中所有的表之后再调用db.create_all()才能重新创建表,但是这样的话,原来表中的数据就都被删除了,这肯定是不行的,这时就出现

  • Flask 数据库迁移详情

    目录 1.使用 Flask-Migrate 实现数据库迁移 2.Flask-Migrate的使用 2.1 数据库的迁移过程 2.1.1 创建迁移环境 2.1.2 生成迁移脚本 2.1.3 更新数据库 3.总结 1.使用 Flask-Migrate 实现数据库迁移 db.create_all()不会重新创建表或是更新表,需要先使用db.drop_all()删除数据库中所有的表之后再调用db.create_all()才能重新创建表,但是这样的话,原来表中的数据就都被删除了,这肯定是不行的,这时就出现

  • 深入了解Python Flask框架之蓝图

    目录 随着Flask项目越来越复杂,把所有视图函数放在一个应用文件中会很不方便我们管理,所以需要对程序进行模块化的处理.Flask内置了一个模块化处理的类--Blueprint蓝图. Blueprint 是一种组织一组相关视图及其他代码的方式.与把视图及其他代码直接注册到应用的方式不同,蓝图方式是把它们注册到蓝图,然后在工厂函数中把蓝图注册到应用. 简单来说就把app应用分为很多个小模块,把这些小模块放在一个包里,这个包叫做蓝图,如下图所示: 项目目录如下图所示: 这里创建了一个名为apps的包

随机推荐