Как избавиться от часов, минут и секунд при отображении даты, отфильтрованной с локализацией (шаблоны Django)?

Как избавиться от часов, минут и секунд, когда я отображаю локализованную дату ({{ post.pub_date|localize }}) в шаблоне Django?

Если я использую только обычную дату (что-то вроде post.pub_date|date:"d m Y"), я могу отображать только день, месяц и год (а не часы, минуты и секунды). С фильтром локализации я не могу контролировать то, что показываю.

В крайнем случае я преобразовал объекты даты и времени в объекты даты в своих представлениях перед отправкой сообщений, но это больше работы (цикл for в списке сообщений).

Спасибо.


person user1011444    schedule 13.03.2013    source источник
comment
Фильтры подключаются по цепочке. Что дает вам {{ post.pub_date|localize|date:d m Y }}?   -  person Brandon    schedule 13.03.2013
comment
Я пробовал это, но это форсирует формат даты (первый день, второй месяц, третий год). В некоторых странах сначала указывается месяц, а следующий день или месяц может быть написан с большой буквы, а может и нет...   -  person user1011444    schedule 13.03.2013
comment
Я надеялся, что будет что-то вроде {{ post.pub_date|localize(%D, %M, %Y) }}, где %D просто говорит, что где-то должен быть день, не заставляя его положение в строке.   -  person user1011444    schedule 13.03.2013
comment
Не то, чтобы я знал об этом, но, конечно, вы всегда можете написать свой собственный фильтр шаблонов. На самом деле это довольно легко.   -  person Brandon    schedule 13.03.2013
comment
Я обязательно попробую это и обновлю этот пост. Спасибо за чаевые.   -  person user1011444    schedule 13.03.2013
comment
Пожалуйста. Пожалуйста, опубликуйте свое решение :)   -  person Brandon    schedule 13.03.2013


Ответы (1)


Django имеет встроенную поддержку локализованного форматирования даты; он просто отключен по умолчанию. Ознакомьтесь с официальной документацией для получения дополнительной информации, но короткий ответ заключается в том, что вы просто установили USE_L10N=True в файле settings.py.

person Hamms    schedule 13.03.2013
comment
Я на самом деле уже загружаю l10n. Дело в том, что дата локализована (для французской локали выводится: "1 марта 2013 10:00:22", как и должно быть, вместо "01 марта 2013 10:00:22"). Проблема, с которой я столкнулся, заключается в том, чтобы избавиться от части «10:00:22» в шаблоне (а не в представлении) без принудительного форматирования. - person user1011444; 14.03.2013
comment
Я считаю, что вам придется определить пользовательские форматы для каждой локали. Ознакомьтесь с разделом Создание файлов пользовательского формата на странице, на которую я ссылаюсь. - person Hamms; 14.03.2013