【问题标题】:If statement throws TemplateSyntaxError Invalid block tag on line 127: 'else', expected 'empty' or 'endfor'If statement throws TemplateSyntaxError Invalid block tag on line 127: 'else', expected 'empty' or 'endfor'
【发布时间】:2020-02-04 07:23:21
【问题描述】:

我正在尝试制作一个 django 应用程序,但遇到以下错误:

异常类型:TemplateSyntaxError 异常值:无效块 第 127 行的标记:'else',预期为 'empty' 或 'endfor'。你忘了吗 注册或加载这个标签?

我查看了代码,在我的模板文件中找不到任何拼写错误,但是模板加载正常,没有以下行:

    {% endif %} {% for i in listings.paginator.page_range %} {% if
listings.number == i %}
    <li class="page-item active">
        <a class="page-link">{{ i }}</a>
    </li>
 {% else %}
    <li class="page-item">
       <a href="?page={{ i }}" class="page-link">{{ i }}</a>
    </li>
 {% endif %} {% endfor %}

我的应用程序的整个代码都在列表文件夹中的这个 github 存储库中: https://github.com/twheelertech/btre_project

我的相关模板代码在这里: https://github.com/twheelertech/btre_project/blob/master/templates/listings/listings.html

我在列表应用程序中检查了 models.py 和 views.py,但它们的格式似乎正确。

我正在使用 Windows 10、python 3.7.3、django 2.2.6

感谢您的帮助。 :)

【问题讨论】:

  • 注意:上面代码中的缩进没有很好的复制过来。我把它放在大约正确的形状。
  • 您确定,github 的链接准确地显示了您遇到问题的模板文件?在第 119 行中没有 else 语句。一般建议。当您使用 git 时,请确保您提交了所有内容并将模板减少到最低限度,这仍然会产生错误。我敢肯定,那时问题几乎可以自我解释。如果你愿意,你甚至可以删除 html。您只想保留{% ... %} 语句以查看模板引擎是否失败。
  • 我已经有一段时间没有使用 django 模板了,但是我虽然在 {% 之后和 %}m 之前需要空格,但我看到了这样的一行 {%endfor%}
  • 谢谢,在 github repo 中,标签位于第 127 行而不是第 119 行。当我移动代码试图修复它时,我抛出了第 119 行错误和第 127 行错误。两个行距之间没有真正改变。问题是多行标签,如下所述。
  • 如您所见,准确发布失败的内容而不做任何假设非常重要。您问题中的代码 sn-p 甚至不包含有问题的多行标签。 git 存储库与您的错误描述不匹配。这使得分析和重现问题变得不必要地困难。它使问题对于搜索问题/类似问题的档案人员也不太有用。也许您可以修复问题中的行号并将代码 sn-p 更改为包含问题的内容?

标签: python django django-models django-templates django-views


【解决方案1】:

Django does not support multi-line tags,你的问题是你最初的“if”标签中间有一个新行

{% endif %} {% for i in listings.paginator.page_range %} {% if
listings.number == i %}

尝试将每个标签保持在一行,每行一个标签

{% for foo in bar %}
    {% if foo.baz %}
    {% else %}
    {% endif %}
{% endfor %}

【讨论】:

  • 这解决了这个问题。导致问题的原因是 vscode 中名为“prettier”的 html 自动格式化程序。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-10-01
  • 2019-02-03
  • 1970-01-01
  • 2014-05-15
  • 1970-01-01
  • 2020-10-15
相关资源
最近更新 更多