Flask蓝图的用法

一,蓝图的初步使用

flask框架自带的模块Blueprint,Blueprint 是一个存储操作方法的容器,它相当于一个缩小版的app应用,但是一个Blueprint并不是一个完整的应用,它不能独立于应用运行,而必须要注册到某一个应用中。

蓝图的作用:解耦,模块化开发
未使用蓝图前:所有的视图模块都在一个文件里面

from flask import Flask

app = Flask(__name__)


@app.route('/')
def index():
    return 'hello world'

@app.route('/user')
def user():
    return 'user model'

@app.route('/cart')
def cart():
    return 'cart model'

if __name__ == '__main__':
    print(app.url_map)
    app.run(debug=True)

使用蓝图(如抽离出user模块):
1.新建一个user.py文件, 创建蓝图对象

from flask import Blueprint
"""蓝图对象可看做一个缩小版的app对象"""
bp = Blueprint('user_bp', __name__) # 第一个参数为蓝图名称,随便取

@bp.route('user/')
def user():
    return 'user model'

蓝图名称

2.在原文件中导入蓝图并将其注册到app中

from flask import Flask
from user import bp
app = Flask(__name__)

app.register_blueprint(bp)

@app.route('/')
def index():
    return 'hello world'

注册完之后便可通过url访问到视图函数啦
在这里插入图片描述

二:在实际开发过程中蓝图的目录结构

前面仅仅使用了一个py文件来编写用户模块,但是蓝图也可以有自己的静态文件和模板,它可以有更丰富的功能和更分明的功能模块。因此可一创建一个包来存放单独的模块,目录结构如下
在这里插入图片描述
最后在app所在的index.py文件中导入和注册蓝图即可

三、目录的扩展

蓝图可以有自己的静态文件夹和模板文件夹
在cart模块下面再创建一个自己的静态文件夹static和模板文件夹templates,templates指定为模板文件夹并指定模板语言为Jinjia2,此时应指明蓝图对象的其他几个参数,如图
在这里插入图片描述

附:一般只在程序主目录放静态文件和模板文件即可,简单清晰,蓝图模块不在建立这两个文件以免文件目录结构冗余复杂

猜你喜欢

转载自blog.csdn.net/Best_fish/article/details/83271044