【问题标题】:Django Template Conditional Statement Using Dates使用日期的 Django 模板条件语句
【发布时间】:2017-08-08 23:42:56
【问题描述】:

我正在尝试检查我的 Django 模板,以查看特定帖子的“添加日期”字段是否在过去三天内。

我正在尝试这样的事情:

{% for deal in deals %}

{% if deal.date_added > (timezone.now ()- timezone.timedelta(days=4)) %}
    <h1>HOT</h1>

{% else %}
      do some other stuff
{% endif %}

{% endfor %}

我收到此错误:无法解析剩余部分:'(timezone.now' from '(timezone.now'

所以内心深处告诉我,从模板中运行这种条件语句绝对不可能——但我想我会检查一下。谢谢。

【问题讨论】:

    标签: python django


    【解决方案1】:
    class Deal(models.Model):
        ...
        def get_label(self):
            if self.date > datetime.date.today() - datetime.timedelta(days=4):
               return "<h1>HOT</h1>" 
            else:
               return "OLD..."
    

    ...然后在您的模板中

    {% for deal in deals %}
        {{ deal.get_label | safe }}
    {% endfor %}
    

    【讨论】:

    • 太棒了,谢谢,这看起来很完美,很有意义。一个问题——当我尝试它时,我得到“无法将 datetime.datetime 与 datetime.date 进行比较”,所以我认为这与比较两种不同数据类型时出现错误有关。我的 date_added 变量在模型中设置如下:models.DateField(default=timezone.now)。我尝试将条件更改为 timezone.now() - timezone.timedelta(days=4) 但得到相同的错误。有什么想法吗?
    猜你喜欢
    • 2019-10-05
    • 2012-09-14
    • 2014-07-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-06
    • 1970-01-01
    • 2013-10-17
    • 2012-12-20
    相关资源
    最近更新 更多