深入了解Python Flask框架之蓝图
随着flask项目越来越复杂,把所有视图函数放在一个应用文件中会很不方便我们管理,所以需要对程序进行模块化的处理。flask内置了一个模块化处理的类——blueprint蓝图。
blueprint 是一种组织一组相关视图及其他代码的方式。与把视图及其他代码直接注册到应用的方式不同,蓝图方式是把它们注册到蓝图,然后在工厂函数中把蓝图注册到应用。
简单来说就把app应用分为很多个小模块,把这些小模块放在一个包里,这个包叫做蓝图,如下图所示:
项目目录如下图所示:
这里创建了一个名为apps的包,我们这个包称为蓝图,在这个包中,我们又创建了三个包,那么我们如何把蓝图与app.py联系起来呢。这时我们就要通过init.py初始化文件来把蓝图与app.py。
首先我们在user包中创建一个视图函数文件名为view,代码如下所示:
from flask import blueprint user_bp= blueprint('user',__name__)
首先导入blueprint包,再通过blueprint()方法来定义变量user_bp为蓝图对象。
init.py初始化文件代码如下所示:
from flask import flask from apps.user.view import user_bp def create_app(): app=flask(__name__,template_folder='../templates',static_folder='../static') #蓝图 app.register_blueprint(user_bp) return app
首先我们导入user中的view对象user_bp,自定义函数create_app()并创建一个app对象,然后通过app.register_blueprint()方法将蓝图对象绑定在app对象上。
注意:由于init.py初始化文件与static静态文件、templates模板文件不在同一级,所以需要重新指定静态文件与模板文件的位置。
接下来编写app.py启动文件,代码如下所示:
from flask import flask from apps.user.view import user_bp def create_app(): app=flask(__name__,template_folder='../templates',static_folder='../static') #蓝图 app.register_blueprint(user_bp) return app
代码很简单,直接导入view文件中的create_app并调用create_app()。
这样app.py文件就和蓝图包联系起来了。
注意:上面的文件名、蓝图名、视图函数名都可以是任意的。
那么我们蓝图的视图函数有什么变化呢?
以上面的view视图函数文件为例,其代码内容如下所示:
from flask import blueprint, request, render_template, redirect from apps.user.model import user user_bp= blueprint('user',__name__) #蓝图对象 @user_bp.route('/') def hello(): return '你好'
与之前的在app.py中写视图函数将比,将之前的@app.route()改为蓝图对象名.route(),其他的就几乎一样。
总结
本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注的更多内容!
推荐阅读
-
python框架flask入门之环境搭建及开启调试
-
Django框架深入了解_04(DRF之url控制、解析器、响应器、版本控制、分页)
-
Python-Web框架之 - 利用SQLALchemy创建与数据库MySQL的连接, 详解用Flask时会遇到的一些大坑 !
-
python Web框架之Flask
-
python框架之Flask基础篇(三)-------- 模版的操作
-
深入了解Python Flask框架之蓝图
-
python框架flask入门之环境搭建及开启调试
-
基于python的flask框架之WEB网站搭建(anaconda)
-
python2.7的flask框架之Jinja2简单配置(全局变量&上下文行为&上下文处理器)
-
python2.7的flask框架之Jinja2简单配置(标准过滤器&注册自己的过滤器)