1

对于 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. 还有什么我没有想到的?

目前做 1 和 2 在我看来是最好的,因为它使它真正成为一个常规设置,而且它会与它一起工作(manage.py diffsettingscf django.core.management.commands.diffsettings,它比较它来决定什么是不同的)。global_settingssettings

4

0 回答 0