Python 导入单个Django设置常量以避免全部设置导入开销的正确方法?
从中,我了解了导入设置文件的公认方法:Python 导入单个Django设置常量以避免全部设置导入开销的正确方法?,python,django,import,Python,Django,Import,从中,我了解了导入设置文件的公认方法: from django.conf import settings 我也读过。这里的一个答案是,第2点和第4点与我的问题相关 假设我有一个巨大的settings.py,在我的Django代码中,我只需要在一个很少调用的方法中使用一个“低级”常量,比如MEDIA_ROOT。因此,导入整个settings.py似乎非常浪费: from django.conf import settings ... def foo(): my_media_root =
from django.conf import settings
我也读过。这里的一个答案是,第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 = sys.modules['django.conf'].settings
你发现用简单的方法做这件事有问题吗?是的。否则,大量过早优化。