Python 如何在烧瓶蓝图中使用装饰器和函数

Python 如何在烧瓶蓝图中使用装饰器和函数,python,flask,Python,Flask,我有一个预先存在的Flask应用程序,它变得相当大,所以我决定根据Flask文档,转而使用蓝图来组织我的视图 我的大多数视图共享函数和装饰器。当我所有的视图都在一个文件中时,很容易访问它们。如何将所有视图组织到单独的文件中,我不确定在何处查找功能和视图等信息 我有以下文件结构: run.py website/ __init__.py views/ __init__.py admin.py home.py ... templates/ static/

我有一个预先存在的Flask应用程序,它变得相当大,所以我决定根据Flask文档,转而使用蓝图来组织我的视图

我的大多数视图共享函数和装饰器。当我所有的视图都在一个文件中时,很容易访问它们。如何将所有视图组织到单独的文件中,我不确定在何处查找功能和视图等信息

我有以下文件结构:

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