【问题标题】:Django template - compare date to todayDjango 模板 - 将日期与今天进行比较
【发布时间】:2013-04-06 15:42:04
【问题描述】:

我正在尝试创建一个简单的 IF 函数来检查项目的日期是否等于今天。不幸的是,我无法让它工作。我基本上认为该声明是错误的并且不显示任何内容,即使它显示。我也没有收到任何错误。

我使用的代码如下:

{% if item.valid_until.date == now.date %}
  <div id="what_i_want_to_show">
    CONTENT
  </div>
{% endif %}

valid_until 的内容是来自 Google App Engine 应用的 DateTimeProperty。通常在 Django 模板中使用它不会导致任何问题。到目前为止,类似问题的解决方案还没有奏效。我错过了什么明显的东西吗?

更新 1:

此语句在数据库查询结果的循环中运行。因此,据我所知,在视图中进行比较不起作用,因为我必须将变量与每个项目一起发送。

【问题讨论】:

  • 我添加了一个更新,希望能解释为什么这不是重复的(据我所知)。我检查了另一个问题,但无法将其用作解决方案。
  • 请添加您的模型文件列表,以了解执行额外查询的原因。
  • 模型代表有一定有效期的优惠券。基于此日期,我想提出这是优惠券可用的最后一天的通知。为此,我查询用户所在页面的优惠券,然后执行此检查。这解释清楚了吗?
  • 什么是now?它来自哪里?

标签: google-app-engine date django-templates


【解决方案1】:

这个案例有两种方法:

第一个: 你可以在模型上添加一个@property

型号:

from datetime import date

@property
def is_past_due(self):
    return timezone.now() > self.valid_until # if valid until default is timezone.now else change it

模板:

{% if item.is_past_due %}
    <!--In the past-->
{% else %}
    {{ item.valid_until.date|date:"Y-m-d" }}
{% endif %}

第二: 用模板上的格式声明今天的日期

{% now "Y-m-d" as todays_date %}
{% if todays_date  < item.valid_until.date|date:"Y-m-d" %}
  <div id="what_i_want_to_show">
    CONTENT
  </div>
{% endif %}

【讨论】:

    猜你喜欢
    • 2012-05-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多