Почему фильтр времени Django по умолчанию не принимает TIME_FORMAT? - PullRequest
1 голос
/ 15 октября 2010

Использование {{today|time:"TIME_FORMAT"}} правильно локализует моменты, когда я переключаю языки в моем проекте Django 1.2.3.Например, для английского я вижу "12:19 a.m.", и когда я переключаюсь на немецкий, он меняется на "12:19:25".

Насколько я могу судить, глядя на документы и код (defaultfilters.pyи formats.py) только использование {{today:time}} должно сделать то же самое и по умолчанию TIME_FORMAT, но это не работает, и всегда используется английский формат по умолчанию.

Есть лиспособ избежать необходимости редактировать все мои шаблоны и изменять их на {{today|time:"TIME_FORMAT"}}?

То же самое происходит с фильтром date и DATE_FORMAT.

Ответы [ 2 ]

3 голосов
/ 15 октября 2010

Документы говорят (выделено):

При использовании без строки формата:

 {{ value|time }}

... будет использоваться строка форматирования, определенная в настройке TIME_FORMAT, без применения какой-либо локализации .

У вас есть два варианта:

  1. Отредактируйте все ваши шаблоны, чтобы внести изменения, или

  2. Создайте новый собственный фильтр, который будет работать так, как вы хотите.

1 голос
/ 15 октября 2010

Спасибо @Ned Batchelder, согласно варианту 2. Я добавил следующее в свой файл тегов шаблонов:

from django.template.defaultfilters import date as defaultfilters_date, time as defaultfilters_time

# FORCE {{...|date}} to be equivalent to {{...|date:"DATE_FORMAT"}} so it localizes properly, ditto for time and TIME_FORMAT

@register.filter(name="date")
def date_localized(val, arg=None):
    return defaultfilters_date(val, arg or "DATE_FORMAT")

@register.filter(name="time")
def time_localized(val, arg=None):
    return defaultfilters_time(val, arg or "TIME_FORMAT")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...