Python 如何在烧瓶蓝图中使用装饰器和函数
我有一个预先存在的Flask应用程序,它变得相当大,所以我决定根据Flask文档,转而使用蓝图来组织我的视图 我的大多数视图共享函数和装饰器。当我所有的视图都在一个文件中时,很容易访问它们。如何将所有视图组织到单独的文件中,我不确定在何处查找功能和视图等信息 我有以下文件结构:Python 如何在烧瓶蓝图中使用装饰器和函数,python,flask,Python,Flask,我有一个预先存在的Flask应用程序,它变得相当大,所以我决定根据Flask文档,转而使用蓝图来组织我的视图 我的大多数视图共享函数和装饰器。当我所有的视图都在一个文件中时,很容易访问它们。如何将所有视图组织到单独的文件中,我不确定在何处查找功能和视图等信息 我有以下文件结构: run.py website/ __init__.py views/ __init__.py admin.py home.py ... templates/ static/
run.py
website/
__init__.py
views/
__init__.py
admin.py
home.py
...
templates/
static/
那么,我在哪里找到函数和装饰器,如何访问它们呢?谢谢。两个或更多蓝图共享的任何代码都可以放在单独的模块中。例如,您可以拥有
decorators.py
和functions.py
,它们可以位于视图
目录中:
run.py
website/
__init__.py
views/
__init__.py
decorators.py # <-- common code
functions.py # <-- common code
admin.py
home.py
...
templates/
static/
如果在视图
之外的其他目录中还有其他可能需要这些公共元素的代码(例如,Flask WTF表单的表单
目录),那么您可以在网站
中将公共模块提升一级
run.py
website/
__init__.py
decorators.py # <-- common code
functions.py # <-- common code
views/
__init__.py
admin.py
home.py
...
templates/
static/
或:
您可以在我的Flask Web开发书中介绍的应用程序中看到上述结构的示例。我有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
或:
这个大烧瓶项目布局不错,看一看@墨菲上尉:我刚刚看过这个项目,没有找到解决问题的办法。也许我不明白这个问题。你想知道如何把函数放在某个地方并导入它们吗?是的,我想知道把它们放在哪里以及如何访问它们。但不仅是函数,还有自定义装饰器。装饰器的导入方式与函数相同。只需创建函数的子模块并从中导入即可
website.py/myfuncs.py
<代码>从网站.myfuncs导入awesome函数
from website.decorators import my_decorator
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