Flask开发(十三)Flask视图高级技术 Flask蓝图

内容纲要

本篇导读:

  • 蓝图的使用

随着业务代码的增加,将所有代码都放在单个程序文件中是非常不合适的。这样不仅会让阅读代码变的困难,而且会给后期代码维护带来麻烦。Flask蓝图提供了模块化管理程序路由的功能,是程序结构清晰、简单易懂。

一个执行程序文件中,如果功能代码过多,是不方便后期维护的。如何实现程序代码模块化,根据具体功能模块的实现,划分成不同的分类,降低各功能模块之间的耦合度呢?这是就要使用到flask.Blueprint(蓝图)了。

蓝图的定义:在蓝图被注册到应用之后,所要执行的操作的合集。当分配请求时,Flask会把蓝图和视图函数关联起来,并生成两个端点之间的URL。

新建app.py、news.py、product.py三个文件,其中app.py的文件内容如下:

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'
app.register_blueprint(news.new_list)
app.register_blueprint(products.product_list)
if __name__ == '__main__':
    app.run()

new.py文件内容如下:

from flask import Blueprint
new_list=Blueprint('news',__name__)

@new_list.route('/news')
def new():
    return '这是新闻模块!'

Blueprint()对象的的第一个参数可以看做是蓝图的名称,第二个参数__name__用作初始化。在一个app里,蓝图的名称不能与其他蓝图的名称重复,也不能与视图函数的名称相同。

products.py文件内容如下:

from flask import Blueprint
product_list=Blueprint('products',__name__)

@product_list.route('/products')
def product():
    return '这是产品模块'

运行效果如下:

蓝图的目的是实现各个模块的视图函数卸载不同的py文件中。主视图中导入分路由视图的模块,并注册蓝图对象。

[successbox title="本篇习题"]

1.请用装饰器相关知识,编程实现统计一段程序中多个函数各自执行的时间。

[/successbox]

阅读剩余
THE END