Это фильтр, который я использовал в качестве замены встроенного date
фильтра .
# 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)
Я использую обычную DATE_FORMAT
настройку Django в settings.py
для установки пользовательского формата даты:
DATE_FORMAT = 'j F Y'
Используется, если текущий язык английский. В противном случае используется текущий язык по умолчанию.
Используйте это как:
{% load my_filters %}
{{ article.published_at|format_date }}
Вы можете расширить это, чтобы предоставить пользовательские форматы для дополнительных языков, но это все, что мне сейчас нужно.
Я все еще ожидал, что в настройках будет возможность определять форматы дат для каждого языка, поэтому я все еще чувствую, что упустил более простой способ сделать это ...