对于Django本身,设置大多数都有默认值,在django.conf.global_settings
中定义。
第三方应用应该做什么? (理想情况下,为什么?)
修改django.conf.global_settings
? (简要介绍一下django/conf/__init__.py
表明这不会起作用,因为一旦访问设置,值就会加载到Settings
对象中,这显然是在加载第三方应用程序之前发生的。)
修改settings
对象,例如myapp/__init__.py
?
if not hasattr(django.conf.settings, 'MY_SETTING'):
django.conf.settings.MY_SETTING = 'default'
有一个单独的模块,例如myapp.conf
,它会静态获取值吗?
MY_SETTING = getattr(django.conf.settings, 'MY_SETTING', 'default')
有一个单独的模块,例如myapp.conf
,它提供了获取值的函数吗?
def my_setting():
return getattr(django.conf.settings, 'MY_SETTING', 'default')
像3或4这样的东西,但不在单独的模块中?
我还没想过别的什么?
目前我认为1和2都是最好的,因为它让它真正成为常规设置,再加上它将与manage.py diffsettings
一起使用(cf django.core.management.commands.diffsettings
,它将global_settings
与settings
进行比较,以得出有关不同内容的决定。