对于第三方应用程序,django.conf.global_settings相当于什么?

时间:2013-06-06 03:33:38

标签: django django-settings django-apps

对于Django本身,设置大多数都有默认值,在django.conf.global_settings中定义。

第三方应用应该做什么? (理想情况下,为什么?)

  1. 修改django.conf.global_settings? (简要介绍一下django/conf/__init__.py表明这不会起作用,因为一旦访问设置,值就会加载到Settings对象中,这显然是在加载第三方应用程序之前发生的。)

  2. 修改settings对象,例如myapp/__init__.py

    if not hasattr(django.conf.settings, 'MY_SETTING'):
        django.conf.settings.MY_SETTING = 'default'
    
  3. 有一个单独的模块,例如myapp.conf,它会静态获取值吗?

    MY_SETTING = getattr(django.conf.settings, 'MY_SETTING', 'default')
    
  4. 有一个单独的模块,例如myapp.conf,它提供了获取值的函数吗?

    def my_setting():
        return getattr(django.conf.settings, 'MY_SETTING', 'default')
    
  5. 像3或4这样的东西,但不在单独的模块中?

  6. 我还没想过别的什么?

  7. 目前我认为1和2都是最好的,因为它让它真正成为常规设置,再加上它将与manage.py diffsettings一起使用(cf django.core.management.commands.diffsettings,它将global_settingssettings进行比较,以得出有关不同内容的决定。

0 个答案:

没有答案