Django:可以在child if语句中使用来自parent for for的变量

时间:2014-03-26 22:12:02

标签: django django-templates webapp2

是否可以在子句的if语句中使用父级for for循环中的变量?

这是一个例子:

{% for ruleset in rulesets %}
  <div>{{ ruleset.0 }}</div>
  <ul>
    {% for rule in rules %}
      {% if rule.0 = {{ ruleset.0 }} %}
        <li>{{ rule.1 }}</li>
      {% else %}
        <!-- Nothing -->
      {% endif %}
    {% endfor %}
  </ul>
{% endfor %}

我得到的错误是: 提升TemplateSyntaxError(“无法解析余数:'%s'来自'%s'”%(令牌[upto:],令牌)) TemplateSyntaxError:无法解析余数:'{{'来自'{{'

我认为这意味着它无法理解if语句中的{{ruleset.0}}。有关如何解决此问题的任何建议吗?

1 个答案:

答案 0 :(得分:2)

您的语法不正确:您无法在{{ ... }}语句中使用{% ... %}

这应该有效,因为内部for循环应该继承外部for循环的范围:

{% for ruleset in rulesets %}
<div>{{ ruleset.0 }}</div>
<ul>
  {% for rule in rules %}
    # = is an assignment operator (which doesn't work in templates),
    # == is the equality operator, which you want to use.
    # alternatively you can use {% ifequal rule.0 ruleset.0 %}{% else %}{% endifequal %}
    {% if rule.0 == ruleset.0  %} 
      <li>{{ rule.1 }}</li>
    {% else %}
      <!-- Nothing -->
    {% endif %}
  {% endfor %}
</ul>
{% endfor %}