gpt4 book ai didi

Flask-蓝图 blueprint详情

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 29 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章Flask-蓝图 blueprint详情由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

前言:

我们的应用经常会有很多小模块,比如用户模块、后台管理模块等,虽然这些模块都在同一个应用中,但是功能大不相同,把他们放在同一个文件中,显得十分杂乱,不便于管理维护,那么有没有什么方法可以将模块分开管理呢?是有的!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 文件,在文件中,创建用户蓝图对象

?
1
2
3
from flask import Blueprint
 
user_bp = Blueprint( "user" , __name__, url_prefix = "/user" )

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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 文件末尾添加如下代码,导入视图函数.

?
1
from . import views

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

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

?
1
app.register_blueprint(user_bp)

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

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

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

原文链接:https://juejin.cn/post/7033188095302467615 。

最后此篇关于Flask-蓝图 blueprint详情的文章就讲到这里了,如果你想了解更多关于Flask-蓝图 blueprint详情的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com