gpt4 book ai didi

python - Flask项目中的__init__文件在启动服务器时如何工作?

转载 作者:太空宇宙 更新时间:2023-11-03 21:27:20 24 4
gpt4 key购买 nike

我正在阅读 Flask tutorial并了解到,在大型应用程序结构中,代码从单个 app.py 文件移动到 _init_.py 文件中的“应用程序工厂函数”create_app ,然后可以这样启动服务器:

export FLASK_APP=flaskr
export FLASK_ENV=development
flask run

我想知道最后一个命令如何在幕后工作,因为代码中的任何地方都没有显式调用此工厂函数,因此没有返回应用程序?

另一个Flask doc尝试解释为什么使用这样的项目结构,但在这种情况下 _init_.py 中的代码显式创建 app:

from flask import Flask
app = Flask(__name__)

import yourapplication.views

python doc说:

The init.py files are required to make Python treat the directories as containing packages; this is done to prevent directories with a common name, such as string, from unintentionally hiding valid modules that occur later (deeper) on the module search path. In the simplest case, init.py can just be an empty file, but it can also execute initialization code for the package or set the all variable, described later.

最后一句提到了“初始化代码”,它可以应用于第二种情况(以及带有 app.py 文件的简单项目结构),但我未能将其应用于第一种情况。

最佳答案

flask source code ,他们检查名为 create_app 的函数是否存在。

# Search for app factory functions.
for attr_name in ('create_app', 'make_app'):
app_factory = getattr(module, attr_name, None)

if inspect.isfunction(app_factory):
try:
app = call_factory(script_info, app_factory)

if isinstance(app, Flask):
return

甚至在 documentation 中也是这样说的:

Flask will automatically detect the factory (create_app or make_app) in myapp.

关于python - Flask项目中的__init__文件在启动服务器时如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53758125/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com