gpt4 book ai didi

python - 导入单个 Django 设置常量以避免完整设置导入开销的正确方法?

转载 作者:太空狗 更新时间:2023-10-30 01:47:03 25 4
gpt4 key购买 nike

来自 Django - Difference between import django.conf.settings and import settings ,我了解导入设置文件的可接受方式:

from django.conf import settings

我也读过 Good or bad practice in Python: import in the middle of a file .那里的答案之一会将您带到 http://mail.python.org/pipermail/python-list/2001-July/699176.html ,其中第 2 点和第 4 点与我的问题相关。

假设我有一个巨大的 settings.py 并且在我的 Django 代码中,我只需要在一个很少调用的方法中使用像 MEDIA_ROOT 这样的“低级”常量。因此,导入整个 settings.py 似乎非常浪费:

from django.conf import settings
...
def foo():
my_media_root = settings.MEDIA_ROOT

当我可以只导入一个需要的常量时:

from settings import MEDIA_ROOT
...
def foo():
my_media_root = MEDIA_ROOT

因此避免导入巨大的 settings.py,特别是因为它可能永远不会被使用,如果 my_media_root 仅用于该文件中的许多方法之一。当然,这是不好的做法,但是“良好做法版本”不起作用:

from django.conf.settings import MEDIA_ROOT
...
def foo():
my_media_root = MEDIA_ROOT

因为,按照设计,它会导致预期的 ImportError: No module named settings 异常。

所以,我的问题是,从大型 settings.py 中只导入一个常量的正确方法是什么?提前致谢。

最佳答案

如果这是一个 Django 项目,那么设置文件已经被导入,您只需导入它并使用您想要的常量就不会花费您任何费用。在 Python 中多次导入模块只会执行一次文件。

导入设置的常用方法:

from django.conf import settings

这只是将模块中的一个名称 (settings) 分配给现有的已导入设置对象的值。它等效于,并且执行时间大致相同:

settings = sys.modules['django.conf'].settings

您在使用简单方法时是否发现问题?

关于python - 导入单个 Django 设置常量以避免完整设置导入开销的正确方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9303273/

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