【问题标题】:Django templates - comapring variables to integer constantsDjango 模板 - 将变量转换为整数常量
【发布时间】:2016-11-26 16:03:00
【问题描述】:

似乎是基本问题,但无法解决问题

{% if iterator.next > 10 %}
    Do smth
{% endif %}

两个问题。首先,此代码不起作用(即使条件似乎成立,if 条件中的代码也从未实现),第二个问题 - ">" 符号被突出显示,就好像它在最近的结束标记的位置打开标签。任何想法如何解决第一个问题,第二个问题可以吗?也许我缺少一些优雅的语法,可以消除文本编辑器的这种歧义?

【问题讨论】:

标签: django templates


【解决方案1】:

iterator.next 可能是一个字符串,它会导致语句为 False。

尝试创建自定义过滤器以将其转换为 int。例如创建“my_filters.py”:

# templatetags/my_filters.py
from django import template

register = template.Library()

@register.filter()
def to_int(value):
    return int(value)

然后在你的模板中:

{% load my_filters %}
{% if iterator.next|to_int > 10 %}
   Do smth
{% endif %}

更多关于自定义标签和过滤器here

我不会担心突出显示,这可能只是您的 IDE。我推荐使用 PyCharm 进行 Django 开发

【讨论】:

    【解决方案2】:

    Django 的文档说您可以将 > 与 if 标记一起使用:

    {% if somevar < 100 %}
      This appears if variable somevar is less than 100.
    {% endif %}
    

    查看文档:https://docs.djangoproject.com/en/1.9/ref/templates/builtins/

    也许您还缺少其他东西?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-08-26
      • 2013-04-14
      • 2013-10-13
      • 1970-01-01
      • 2014-11-14
      • 2013-11-17
      • 2013-07-27
      相关资源
      最近更新 更多