Шаблоны Django: отображать дату, только если она в будущем - PullRequest
1 голос
/ 20 декабря 2010

Как сравнить даты в шаблоне Django?Я подумал о нескольких возможных направлениях:

  • Отправить сегодняшнюю дату в контексте для сравнения в шаблоне
  • Создать свой собственный тег шаблона
  • Иметь некоторую логику вчтобы передать только дату, если она в будущем

Хотя последний вариант кажется более простым, я скорее оставляю логику отображения в шаблоне, чем в представлении.Я также не хочу передавать что-то, что кажется таким тривиальным, как сегодняшняя дата, в контексте шаблона.

Возможно, у кого-то есть другой вариант или он может поделиться своей реализацией одного из вариантов, которые я упомянул выше, и почему они решили пойтиэтот маршрут.

Ответы [ 2 ]

6 голосов
/ 20 декабря 2010

Я бы пошел с фильтром шаблона:

from datetime import date
...
@register.filter
def future_dates_only(the_date):
   if the_date > date.today():
       return the_date
   else:
       return None

Затем, по вашему мнению, сделайте что-то вроде:

{{specialdate|future_dates_only|date:"d M Y"}}
2 голосов
/ 21 декабря 2010

IMO, чище делать такие вещи в виде или в вспомогательном модуле и передавать их в контексте.Шаблоны лучше оставить без логики или с наименьшим количеством возможных (в конце концов, это шаблон MVC).

...