gpt4 book ai didi

python - Flask instance init中的第一个参数怎么理解?

转载 作者:太空宇宙 更新时间:2023-11-04 08:05:37 30 4
gpt4 key购买 nike

当创建 Flask 实例时,我们总是使用 __name__ 作为第一个参数,但是为什么?

class flask.Flask(import_name, static_path=None, static_url_path=None,static_folder='static', template_folder='templates', instance_path=None, instance_relative_config=False)

官方文档说第一个参数是用来找资源的,怎么办?

最佳答案

导入名称用于解析安装 Flask 应用程序的目录(参见 get_root_path 中的 flask/helpers.py 函数)。这使得 render_templatesend_static_fileconfig 中的相对文件路径无需文件即可解析为应用程序文件夹中的文件要提供的路径。

考虑一个没有此功能的极其简单的 Python 应用程序:

simple_app.py

print("Running simple_app")

with open('the-folder/simple.file', 'r') as f:
for line in f:
print(f)

简单文件

Hello
World!

目录结构如下:

some-path/
simple-app/
simple_app.py
the-folder/
simple.file

如果我们在当前工作目录是 simple-app/ 时启动 Python,一切都会正常工作:

simple-app$ python simple_app.py
Running simple_app
Hello
World!

但是如果我们向上移动一个文件夹并重试:

some-path$ python simple-app/simple_app.py
Traceback (most recent call last):
IOError: [Errno 2] No such file or directory: 'the-folder/simple.file'

当我们向下移动一个文件夹时会发生同样的事情。然而,如果我们能得到 simple_app.py 在文件系统上的位置,我们就可以os.join simple_app.py 所在的目录> 安装了 the-folder/simple.file

with open(os.join(SIMPLE_APP_DIR, 'the-folder/simple.file', 'r') as f:

我们的工作目录并不重要,因为我们总是处理绝对路径。这就是 Flask 所做的,这就是为什么它需要传入 __name__ 的原因。

关于python - Flask instance init中的第一个参数怎么理解?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31768371/

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