我可以为我的 Flask 应用程序工厂使用 app.py 而不是 __init__.py 吗?
Can I use app.py instead of __init__.py for my Flask application factory?
我有一个 Flask 应用程序,大致结构如下:
my_app/
__init__.py # Contains create_app()
utils/
__init__.py # Useful functions
other_stuff.py
一切正常,但是当我在 other_stuff.py
中 import my_app.utils
时,它还在 __init__.py
中执行一些特定于 Flask 的代码,这对我的用例来说有点不受欢迎。
所以,我将 __init__.py
重命名为 app.py
并将环境变量 FLASK_APP=my_app
重命名为 FLASK_APP=my_app.app
。
my_app/
app.py # Contains create_app()
utils/
__init__.py # Useful functions
other_stuff.py
一切似乎都很好。然而,这个结构在 Flask 文档或任何教程中都没有提到。
有什么理由不使用这种方法吗?
(另外,create_app()
应该使用 app = Flask('my_app')
还是 app = Flask('my_app.app')
?)
不,你没有理由做不到。
不过,如果您的应用包含依赖于烧瓶和不依赖于烧瓶的位,您可能会考虑将烧瓶位完全放在不同的包中:
my_app/
__init__.py
some_other_web_stuff.py
my_tools/
__init__.py
或者也许
my_app/
web/
__init__.py
some_other_web_stuff.py
utils/
__init__.py
我有一个 Flask 应用程序,大致结构如下:
my_app/
__init__.py # Contains create_app()
utils/
__init__.py # Useful functions
other_stuff.py
一切正常,但是当我在 other_stuff.py
中 import my_app.utils
时,它还在 __init__.py
中执行一些特定于 Flask 的代码,这对我的用例来说有点不受欢迎。
所以,我将 __init__.py
重命名为 app.py
并将环境变量 FLASK_APP=my_app
重命名为 FLASK_APP=my_app.app
。
my_app/
app.py # Contains create_app()
utils/
__init__.py # Useful functions
other_stuff.py
一切似乎都很好。然而,这个结构在 Flask 文档或任何教程中都没有提到。
有什么理由不使用这种方法吗?
(另外,create_app()
应该使用 app = Flask('my_app')
还是 app = Flask('my_app.app')
?)
不,你没有理由做不到。
不过,如果您的应用包含依赖于烧瓶和不依赖于烧瓶的位,您可能会考虑将烧瓶位完全放在不同的包中:
my_app/
__init__.py
some_other_web_stuff.py
my_tools/
__init__.py
或者也许
my_app/
web/
__init__.py
some_other_web_stuff.py
utils/
__init__.py