Django无效的块标记:endelse和ifequal

时间:2014-06-30 05:41:34

标签: python django

我想使用django ifequalelse标记来判断变量是否等于8022。所以,这是代码:

{% if firewalls %}
<thead>
  <tr>
    <th>IP address</th>
    <th>Function</th>
  </tr>
</thead>
{% endif %}
<tbody>
{% for firewall in firewalls %}
  <tr>
    <td>{{ host_ip }} : {{ firewall.from_port }}</td>

    {% ifequal firewall.to_port 22 %} <td>Ssh Service</td>
    {% ifequal firewall.to_port 80 %} <td>Web Service</td>
    {% else %} <td>Unknown Service</td>{% endifequal %}{% endelse %}

  </tr>
{% endfor %}

错误是Invalid block tag: 'endelse', expected 'else' or 'endifequal'。有人可以帮助我吗?非常感谢!

3 个答案:

答案 0 :(得分:3)

ifequal标记的替代方法是使用if标记和==运算符。以及#39; ==&#39;运营商:

{% if firewall.to_port == 20 %}
   <td>Ssh Service</td>
{% elif firewall.to_port == 80 %}
   <td>Web Service</td>
{% else %}
   <td>Unknown Service</td>
{% endif %}

这样您也可以节省代码处理时间,因为它不会评估每个端口号的条件。

答案 1 :(得分:2)

Django支持相等运算符。要解决您的代码问题,我已经使用过:

{% if firewalls %}
<thead>
  <tr>
    <th>IP address</th>
    <th>Function</th>
  </tr>
</thead>
{% endif %}
<tbody>
{% for firewall in firewalls %}
  <tr>
    <td>{{ host_ip }} : {{ firewall.from_port }}</td>

    {% if firewall.to_port==22 %} <td>Ssh Service</td>
    {% elif firewall.to_port==80 %} <td>Web Service</td>
    {% else %} <td>Unknown Service</td>{% endif %}

  </tr>
{% endfor %}

答案 2 :(得分:0)

    {% ifequal firewall.to_port 22 %} <td>Ssh Service</td>{% endifequal %}
    {% ifequal firewall.to_port 80 %} <td>Web Service</td>{% endifequal %}
    {% if firewall.to_port !=22 and if firewall.to_port !=80   %} <td>Unknown Service</td>{% endif %}

每个ifequal你需要用endifequal错过一个

关闭它