flask之 蓝图

文章目录

      • 蓝图简介
      • 蓝图的使用
      • 寻找模板文件
        • 文件查找方式
      • 寻找静态文件
        • 文件查找方式
      • 寻找静态和模板文件的差异点
      • url_for

蓝图简介

之前我们写的url和视图都是在一个文件中,这对于小项目来说是没有什么问题,但如果项目大了,url和视图有很多,如果都放在一个文件中就不太方便管理了。因此我们将他们按照不同的功能进行模块化分离。而蓝图能够帮助我们实现这个需求。

蓝图的使用

1、编写蓝图

新创建一个蓝图文件(py文件),在该蓝图文件中编写蓝图

写蓝图需要导入Blueprint模块

from flask import Blueprint

book_bp = Blueprint('book', __name__, url_prefix='/book')
# url_prefix是url前缀

@book_bp.route('/')
def book():
    return '这是图书页面'

@book_bp.route('/page')
def book_page(page):
    return '这是图书的第%s页' % page

2、在主程序中进行蓝图的导入与注册

用app.register_blueprint()方法进行注册

导入:

from blue_print.blueprints.book import book_bp

注册:

app.register_blueprint(book_bp)

注册完成后,访问时输入/book,即可执行蓝图里面编写的视图函数。

寻找模板文件

蓝图默认不设置模板文件的路径,当然,蓝图可以设置模板路径:(template_folder)

book_bp = Blueprint('book', __name__, url_prefix='/book', template_folder='templates')
文件查找方式

蓝图在渲染模板时(无论设置不设置template_folder)会先从项目根目录的templates文件夹中寻找,如果没有,才会到蓝图文件所在目录下的templates文件夹(或者设置的template_folder)中查找。

寻找静态文件

与模板文件一样,蓝图默认不设置静态文件的路径,也可以设置静态文件的路径:(static_folder)

economy_bp = Blueprint('economy', __name__, url_prefix='/economy', template_folder='sleet', static_folder='static')
文件查找方式

寻找静态文件的方式和寻找模板文件类似,会先从项目根目录的static文件夹中查找,没有找到则去蓝图文件所在目录的static文件夹中查找。

寻找静态和模板文件的差异点

寻找静态文件和寻找模板文件不一样的两个地方是:

1、即使你修改了静态文件的路径(如不是static文件夹),你在模板中引用静态文件时,引用的路径还是得写static。

2、如果静态文件是在蓝图文件所在目录下,在模板中引用则需写 ‘蓝图名.static’

url_for

在蓝图中如果在主程序中要用url_for返回视图函数的路径,需要这样写:

url_for(‘l蓝图名.视图函数名’,[参数])

url_for('book.book_page',page=2)

当然,需要进行蓝图的注册后,url_for才会有返回结果

你可能感兴趣的:(flask,python,flask)