python - Django DATE_FORMAT 工作日名称

标签 python django

我想在 Django 中格式化日期对象。具体来说,我想在 settings.py 中使用 DATE_FORMAT。使用Django Documentation ,我将其设置为:DATE_FORMAT = 'l, m F Y'。小写的 l 表示工作日名称。

在模板中,我使用 {{ value|date:"DATE_FORMAT"}},但它从不呈现工作日名称。
如果我执行:{{ value|date:"l, m F Y"}},我会得到预期的结果。

settings.py 中允许的内置日期过滤器是否有任何限制?

谢谢!

最佳答案

简短回答:由于本地化 (L10N),语言定义的格式优先于您定义的格式。

发生这种情况的原因可能是因为您启用了 L10N,这意味着您没有使用 settings.py 中指定的 DATE_FORMAT 。这在 the documentation on DATE_FORMAT 中指定。 :

Note that if USE_L10N is set to True, then the locale-dictated format has higher precedence and will be applied instead

因此,通过在您的设置中设置 L10N = True,如果为该语言定义了此类格式,它将采用该格式,而不是您指定的格式。

事实上,如果我们导入django.conf.locale.en.formats,我们会看到:

>>> import django.conf.locale.en.formats
>>> django.conf.locale.en.formats.DATE_FORMAT
'N j, Y'

因此,由于 L10N,它被渲染为 'N j, Y',事实上,如果我们使用该格式渲染时间戳,则两者是相同的:

>>> Template('{{ value|date:"DATE_FORMAT" }}').render(Context({'value': timezone.now()}))
'Sept. 7, 2019'
>>> Template('{{ value|date:"N j, Y" }}').render(Context({'value': timezone.now()}))
'Sept. 7, 2019'

您可以将USE_L10N设置为False,从而使用指定的格式。

# settings.py

# ...

USE_L10N = <b>False</b>

# ...

或手动指定格式。但通常 L10N 用于根据以事件语言显示日期的首选方式来格式化日期(和其他元素)。

关于python - Django DATE_FORMAT 工作日名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57832479/

相关文章:

python - numpy.dot -> MemoryError, my_dot -> 非常慢,但有效。为什么?

python - 根据索引列合并两个数据框

django - XML 向亚马逊 MWS 提交得很好,但价格没有更新

python - 使用 cleaned_data 时为 "TypeError: string indices must be integers"

python - PostgreSQL 在 'Local time zone' 中保存日期,而我使用 Django 将其设置为 'UTC'

python - 列表列表之间的最短路径

python - 通过命令行从 unittest.TestCase 运行单个测试

python - python 获取一个csv字段中2个数字的平均值

django - Selenium -显示有关浏览器中发生的事情的注释

django - 无法杀死 gunicorn 进程