Как отобразить «Это много месяцев назад» в Django с помощью Humanize? - PullRequest
10 голосов
/ 16 июня 2011

У меня есть эта переменная:

{{ video.pub_date }}

, которая выводит:

May 16, 2011, 2:03 p.m.

Как мне заставить ее показать:

1 month ago

Я загрузил Humanizeна странице, но django docs для humanize не показывает, как реализовать его, чтобы показать то, что я хочу:

https://docs.djangoproject.com/en/dev/ref/contrib/humanize/

Это просто говорит о том, что это возможно в нижней частистраница там.

Ответы [ 2 ]

22 голосов
/ 16 июня 2011

Чтобы использовать фильтр naturaltime

, вам нужна версия для разработки Django.
{% load humanize %}
{{ video.pub_date|naturaltime }}

Humanize - это не шаблонный тег, это библиотека шаблонных фильтров , что означает, что при загрузке у вас есть доступ к различным другим фильтрам, включенным в модуль.

В качестве альтернативы вы можете использовать timesince filter без необходимости загружать любые другие библиотеки тегов шаблонов

{{ video.pub_date|timesince }}
3 голосов
/ 16 июня 2011
{{ video.pub_date|timesince }} ago

Из документов в раз с

TimeSince

Форматирует дату как время с этого дата (например, "4 дня, 6 часов").

Принимает необязательный аргумент, который является переменная, содержащая дату для использования в качестве точка сравнения (без аргумент, точка сравнения сейчас). Например, если blog_date является экземпляр даты, представляющий полночь 1 июня 2006 г. Дата экземпляра для 08:00 1 июня 2006, тогда {{ blog_date | timesince: comment_date}} вернется "8 часов".

Сравнение офсетной наивности и datetime с учетом смещения вернет пустая строка.

Минуты - самая маленькая используемая единица, и «0 минут» будут возвращены для любого дата, которая в будущем по отношению к точка сравнения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...