您是否有任何理由不能将模板过滤器与Django模板语法中的字符串进行比较?

rmh*_*rmh 0 django

我正在努力做到这一点,并且失败了.有没有理由说它不能用于Django模板语法?我正在使用最新版本的Django.

{% ifequal entry.created_at|timesince "0 minutes" %}
Run Code Online (Sandbox Code Playgroud)

S.L*_*ott 5

它不起作用,因为它不应该工作.您要求的不是模板语言的一部分.

你不能在标签的中间应用过滤器{% ifequal.当模板标签使用变量时,它不期望表达式,它只需要一个变量.

这种逻辑 - 提取时间,比较等等 - 是您在视图函数中应该做的事情.

然后,您的视图函数会在上下文中放置"zerominutes"项以供模板使用.模板只是做不了多少处理.

它们旨在实现呈现HTML所需的最低要求.其他一切都需要在您的视图功能中.


Ale*_*lev 5

{% ifequal %}tag不支持过滤器表达式作为参数.它将整体entry.created_at|timesince视为变量的标识符.

Quik解决方法:使用{% with %}如下方法引入具有expresion结果的中间变量:

{% with entry.created_at|timesince as delta %}
    {% ifequal delta "0 minutes" %}
    ....
    {% endifequal %}
{% endwith %}
Run Code Online (Sandbox Code Playgroud)