开发者

Django Templates: Display a date only if it's in the future

How do I compare dates in a Django template? I thought of several possible avenues:

  • Send today's date in the context to be compared at the template
  • Create my own template tag
  • Have some logic in the view to only pass the date if it's in the future

Although the last option seems easier, I rather leave the display logic in the template than in the view. I also do not want to pass something that seems so trivial like today's date in the template context.

Perhaps someone has another option or could share their implementation of 开发者_C百科one of the options I mentioned above and why they decided to go that route.


I'd go with a template filter:

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

Then in your view do something like:

{{specialdate|future_dates_only|date:"d M Y"}}


IMO it is cleaner to do that kind of things in a view or in a helper module, and pass it in the context. The templates are better left with no logic or the very least possible (that's the MVC pattern after all).

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜