为什么平衡的Django模板{%if%}和{%endif%}在第50行获得无效的块标记:'endif',预期'empty'或'endfor'

时间:2017-03-16 14:34:41

标签: django django-templates

我收到错误,指出不期望外部{{ endif }}关闭标记;预计会{{ empty }}{{ endfor }}。听起来我的{{ endif }}与之前的{% if ... %}不匹配,它希望我以嵌套方式关闭最外层的循环(http://pastebin.com/Knsbi6bH处的源)。 (这应该在{{ for }}循环内,但{{ endif }} AFAIK与开场{{ if ... }}匹配。它是{{ endif }}之前的</h2>

记者错误是第50行:

40                                          {% else %}
41                                              {% if pet.shelter.website or
42                                                pet.shelter.slugline %}
43                                                  this shelter
44                                              {% endif %}
45                                          {% endif %}
46                                          {% if pet.shelter.name or
47                                            pet.shelter.website %}
48                                              </a>)
49                                          {% endif %}
50                                      {% endif %}
51                                  </h2>
52                                  {% if pet.snippet %}
53                                      {{ pet.snippet }}
54                                  {% endif %}
55                              </td>
56                          </tr>
57                      {% endif %}
58                  {% endfor %}
59              </table>
60          {% else %}

Pastebin位于http://pastebin.com/Knsbi6bH

{% ... %}代码需要在一行吗?我欢迎任何关于我所缺少的想法。

1 个答案:

答案 0 :(得分:1)

是的,Django模板标签必须在一行

请参阅django-developers邮件列表中的ticket #8652(关闭为wontfix)或this discussion

您需要更改

之类的标签
{% if pet.shelter.name or 
    pet.shelter.website %}

{% if pet.shelter.name or pet.shelter.website %}