【问题标题】:Django Templates: Display a date only if it's in the futureDjango模板:仅在未来显示日期
【发布时间】:2010-12-20 20:42:52
【问题描述】:
如何比较 Django 模板中的日期?我想到了几种可能的途径:
- 在上下文中发送今天的日期以在模板中进行比较
- 创建我自己的模板标签
- 在视图中有一些逻辑,只有在日期在未来时才传递日期
虽然最后一个选项看起来更简单,但我宁愿将显示逻辑留在模板中而不是视图中。我也不想在模板上下文中传递像今天的日期这样微不足道的东西。
也许有人有另一种选择,或者可以分享他们对我上面提到的一个选项的实施以及他们决定走这条路的原因。
【问题讨论】:
标签:
python
django
datetime
django-templates
【解决方案1】:
我会使用模板过滤器:
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】:
IMO 在视图或辅助模块中执行此类操作并在上下文中传递它会更简洁。模板最好不带逻辑或尽可能少地保留(毕竟这就是 MVC 模式)。