如何比较 Django 模板中的日期

新手上路,请多包涵

我想将日期与 Django 中的当前日期进行比较,最好是在模板中,但也可以在呈现模板之前进行。如果日期已经过去,我想说“过去”,如果是未来,我想给出日期。

我希望有人能做这样的事情:

 {% if listing.date <= now %}
     In the past
{% else %}
     {{ listing.date|date:"d M Y" }}
{% endif %}

现在是今天的日期,但这不起作用。我在 Django 文档中找不到任何相关信息。谁能给点建议?

原文由 Herman Schaaf 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 821
2 个回答

比较视图中的日期,并将类似 in_the_past (布尔值)的内容传递给 extra_context。

或者更好地将它作为属性添加到模型中。

 from datetime import date

@property
def is_past_due(self):
    return date.today() > self.date

然后在模板中:

 {% if listing.is_past_due %}
    In the past
{% else %}
    {{ listing.date|date:"d M Y" }}
{% endif %}

基本上模板不是日期比较 IMO 的地方。

原文由 bx2 发布,翻译遵循 CC BY-SA 4.0 许可协议

从 Django 1.8 开始,以下有点令人反感的构造完成了这项工作:

 {% now "Y-m-d" as todays_date %}
{% if todays_date < someday|date:"Y-m-d" %}
   <h1>It's not too late!</h1>
{% endif %}

Hackish,但它避免了对自定义标记或上下文处理器的需要。

原文由 Dirk Bergstrom 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏