我有一个预先存在的Flask应用程序,它变得非常大,所以我决定切换到使用蓝图,按照Flask文档,来组织我的视图。
我的大多数视图都共享函数和装饰器。当我的所有观点都在一个文件中时,很容易访问它们。现在如何将所有视图组织成单独的文件,我不确定在何处查找函数和视图等信息。
我有以下文件结构:
run.py
website/
__init__.py
views/
__init__.py
admin.py
home.py
...
templates/
static/
那么,我在哪里找到函数和装饰器以及如何访问它们?感谢。
答案 0 :(得分:4)
两个或多个蓝图共享的任何代码都可以放在单独的模块中。例如,您可以拥有decorators.py
和functions.py
,它们可以位于views
目录中:
run.py
website/
__init__.py
views/
__init__.py
decorators.py # <-- common code
functions.py # <-- common code
admin.py
home.py
...
templates/
static/
然后在您的视图中,您可以按如下方式导入元素:
from .decorators import my_decorator
如果views
以外的其他目录中的其他代码可能需要这些公共元素(例如Flask-WTF表单的forms
目录),那么你可以放您的常用模块在website
中升级一层。
run.py
website/
__init__.py
decorators.py # <-- common code
functions.py # <-- common code
views/
__init__.py
admin.py
home.py
...
templates/
static/
使用此结构,您可以按如下方式从视图中导入:
from ..decorators import my_decorator
或:
from website.decorators import my_decorator
您可以在我的Flask Web开发手册中的Flasky应用程序中看到上述结构的示例。我将decorators.py
,email.py
和exceptions.py
作为所有蓝图都可以访问的常用模块。
如果常用模块的数量很大,您也可以将公共模块移到自己的包中:
run.py
website/
__init__.py
common/
__init__.py
decorators.py
functions.py
views/
__init__.py
admin.py
home.py
...
templates/
static/
然后导入如下:
from ..common.decorators import my_decorator
或:
from website.common.decorators import my_decorator