在大型flask的项目中,主要三种常见的项目组织架构:功能架构(自己的博客)、分区式架构和混合式架构。
在功能式架构中,程序包由各个代表程序组件(功能)的子包组成,比如:
blueprints(蓝本) 因为程序比较简单,蓝本主要是用来组织路由,所有项目中的蓝本直接在blueprints包下的模块中创建。如果蓝本需要注册更多的处理程序,比如错误处理函数、请求处理函数等。
init.py
auth.py
dashboard.py
……
front.py
……
forms(表单)
templates(模板)
static (静态文件)
models(模型)
init.py
通过为蓝本创建子包还可以支持为蓝本创建独立的templates和static文件夹;
和在单模块中创建蓝本不同,当在子包中创建蓝本时,为了方便其他模块导入蓝本对象,这时蓝本对象在蓝本子包的构造文件中创建。 而且,因为在构造文件中定义,为了把路由、错误处理器、请求处理函数等和蓝本对象关联起来,需要在构造文件中导入这些模块。
pythonfrom flask import Blueprint
front_bp = Blueprint('front',__name__)
from myapp.blueprints.front import views,errors
在路由模块等要使用蓝本对象的地方可以直接导入这里创建的蓝本对象:
pythonfrom bluelog.blueprints.front import front_bp
在分区式架构中,程序被按照自身的板块分成不同的子包。myapp使用分区式架构可以分别创建front\auth\dashboard三个子包,这些子包直接在程序包的根目录下床架,子包中使用模块组织不同的程序组件,比如views.py、forms.py 如下:
dashboard/
front/
……
混合式架构,顾名思义,就是不按照常规分类来组织。比如:采用类似分区架构的子包来组织程序,但各个蓝本公用程序包更目录下的模板文件夹和静态文件夹
本文作者:Eric
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!