【发布时间】:2025-12-07 16:50:02
【问题描述】:
来自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 中只导入一个常量的正确方法是什么?提前致谢。
【问题讨论】: