flask学习笔记--蓝图

首先,我对蓝图的理解相对通俗,就是觉得蓝图对于视图方法模块化、大项目协同开发过程中的一个很好的工具.


1.  对于简单的,只有少量视图函数的小程序可以将视图函数都放在一个模块里,如下:

#views.py
1
from app import app 2 3 4 @app.route('/user/index') 5 def index(): 6 return 'user_index' 7 8 @app.route('/user/show') 9 def show(): 10 return 'user_show' 11 12 @app.route('/user/add') 13 def add(): 14 return 'user_add' 15 16 @app.route('/admin/index') 17 def adminindex(): 18 return 'admin_index' 19 20 @app.route('/admin/show') 21 def adminshow(): 22 return 'admin_show' 23 24 @app.route('/admin/add')

从上面的6视图函数可以看出,6个视图函数分别对应admin和user两个用户的index,show,add方法。当然,按照这样写视图函数的功能均可实现。但是对于较大型的项目,把所有的视图函数均放在一个模块里,显然不便于代码分工和维护,而使用循环导入的方法又显得比较low。因此,便有了蓝图来帮助flask将视图函数分类管理。

-----------------------------------------------------------------------------------

蓝图主要功能介绍

1. 为方便视图函数的维护与分工

Blueprint可以理解为app在每个视图模块里雇佣了一个代理人,各个模块分别由各自的代理人来管理视图函数与域名的对应关系。每个代理人都必须在app这里完成注册,告诉app自己代理的是那个视图函数模块。

因此,Blueprint使用分为2步,第一步:在各个视图函数中建立代理 ;第二步:在app所在的模块完成注册。

第一步: 在视图函数模块完成注册:

flask学习笔记--蓝图_第1张图片

注意视图函数名不得与‘代理人’同名

第二步:在app模块完成‘代理人’认证:

flask学习笔记--蓝图_第2张图片

     文件目录管理

对于各模块的管理,template_folder指定模板文件所在的路径(相对路径,相对于app文件所在路径)

如下给出一个文件目录结构,并对其进行简单说明

flask学习笔记--蓝图_第3张图片

run.py 放在根目录下,为程序的入口,启动app,  但app的实例化在根目录(flask_exc)下的flask_exc目录的__init__.py里 。

__init__.py :实例化app,并完成对各代理人的认证

view文件夹: 所有的视图函数模块均按功能分类放在此文件夹中。

templates: 存放模板


-----------------------------------------------------------------------------------------


当然上面这些只是Blueprint的基本功能,它还有很多很好用的附加功能。

2.  利用蓝图给url加前缀

只需要在创建蓝图对象的时候加上必选参数 url_prefix 即可,添加了这个必选参数后所有蓝图路由前面机会自动添加这个参数

注意:url_prefix这个必选参数是一个字符串,而且这个字符串必须以 / 开头,否则会报错

    

    flask学习笔记--蓝图_第4张图片

3. 将请求扩展按蓝图划分

flask学习笔记--蓝图_第5张图片

这样在访问login蓝图下的视图函数前, 均会先执行func_pre函数。这样可以更灵活的使用请求扩展。

当然,flask给我们提供的蓝图功能非常多,这里仅仅列举了我用到的功能。更多的功能等用到在总结。

你可能感兴趣的:(flask)