在Django模板中,我显示的日期如下:
{{ article.published_at|date }}
显示如下:
11月。 2018年21月
我想更改这种格式,但是:
我正在使用本地化,所以我不想在模板中指定特定的日期格式-每种语言都有其自己的日期显示方式。
当DATE_FORMAT
设置为L10N
时,Django True
设置does not have any effect。
那我怎么办
en
)时,请为此日期使用其他格式en
,请使用当前语言的默认日期格式。答案 0 :(得分:0)
您的模板是否包含slim
标签?
答案 1 :(得分:0)
这是我最终用来替代内置date
filter的过滤器。
# myapp/templatetags/my_filters.py
from django import template
from django.conf import settings
from django.template.defaultfilters import date
from django.utils import dateformat
from django.utils.translation import get_language
register = template.Library()
@register.filter(expects_localtime=True, is_safe=False)
def format_date(value):
if value in (None, ''):
return ''
language_code = get_language()
if language_code == 'en':
# Language is English, so use the format defined in settings:
return dateformat.format(value, settings.DATE_FORMAT)
else:
# Language is not English, so use language-specific default:
return date(value)
我在settings.py
中使用常规的DATE_FORMAT
Django设置来设置自定义日期格式:
DATE_FORMAT = 'j F Y'
如果当前语言是英语,则使用此选项。否则,将使用当前语言的默认语言。
使用方式:
{% load my_filters %}
{{ article.published_at|format_date }}
您可以扩展它以提供其他语言的自定义格式,但这就是我现在所需要的。
我仍然希望有一种方法可以在设置中定义每种语言的日期格式,所以我仍然觉得自己错过了一种更简单的方法...