【问题标题】:Extend an existing list in Django settings在 Django 设置中扩展现有列表
【发布时间】:2011-05-06 19:36:52
【问题描述】:

我正在尝试在我的应用程序中允许更灵活的日期输入,并希望使用默认的 Django 设置。根据文档,我可以在 settings.py 中定义 DATE_INPUT_FORMATS,但我想保留默认值并添加一些其他值。

我尝试扩展它,就好像它已经存在一样失败了:

DATE_INPUT_FORMATS += ['%m-%d-%y',]

产量:NameError: name 'DATE_INPUT_FORMATS' is not defined

我还尝试从 django.conf 导入默认设置,但这是循环的,因为它试图包含我正在加载的 settings.py

from django.conf import settings as default_settings
DATE_INPUT_FORMATS = default_settings.DATE_INPUT_FORMATS
DATE_INPUT_FORMATS += ['%m-%d-%y',]

产量:

Error: Can't find the file 'settings.py' in the directory containing './manage.py'. It appears you've customized things.
You'll have to run django-admin.py, passing it your settings module.
(If the file settings.py does indeed exist, it's causing an ImportError somehow.)

在 Django 的settings.py 中扩展默认设置的正确方法是什么?

【问题讨论】:

    标签: django


    【解决方案1】:

    您应该可以导入表单django.conf.global_settings

    【讨论】:

      【解决方案2】:

      这有点烦人,但是重新定义并附加自己的东西要简单得多。此外,就可维护性而言,明确您的设置会更明智。

      django source code for django.conf.global_settings.py 中查找默认值。

      DATE_INPUT_FORMATS = (
          '%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', # '2006-10-25', '10/25/2006', '10/25/06'
          '%b %d %Y', '%b %d, %Y',            # 'Oct 25 2006', 'Oct 25, 2006'
          '%d %b %Y', '%d %b, %Y',            # '25 Oct 2006', '25 Oct, 2006'
          '%B %d %Y', '%B %d, %Y',            # 'October 25 2006', 'October 25, 2006'
          '%d %B %Y', '%d %B, %Y',            # '25 October 2006', '25 October, 2006'
      
              '%m-%d-%y'        # <-- Yours
      )
      

      【讨论】:

      • 比较简单,但如果有人发现元组中有错误或遗漏,情况可能会更糟。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-11
      相关资源
      最近更新 更多