有关jinja2.exceptions.TemplateSyntaxError的问题:遇到未知标签'endfor'。 Jinja在寻找以下标签:'endblock'

时间:2019-07-17 17:12:07

标签: python django flask jinja2

我正在尝试使用Flask构建网站,但遇到jinja2.exceptions.TemplateSyntaxError: Encountered unknown tag 'endfor'. Jinja was looking for the following tags: 'endblock'. The innermost block that needs to be closed is 'block'错误。当我尝试使用localhost:5000登录到本地网页时,出现上述错误。

我已经阅读了回溯错误,它似乎发生在我的index.html文件的第21行。


{% block content %}
  <h1>Hi, {{ current_user.username }}!</h1>
  {% if form %}
  <form action="" method="post">
      {{ form.hidden_tag() }}
      <p>
          {{ form.post.label }}<br>
          {{ form.post(cols=32, rows=4) }}<br>
          {% for error in form.post.errors %}
          <span style="color: red;">[{{ error }}]</span>
          {% endfor %}
      </p>
      <p>{{ form.submit() }}</p>
      </form>
      {% endif %}
      { % for post in posts %}
            {% include '_post.html' %}

      {% endfor %}
      <p>
      {{ post.author.username }} says <b>{{ post.body }}</b>
      </p>


{% endblock %}```

The expected result is that I am able to log into my local Flask website and see other users posts on the webpage.

3 个答案:

答案 0 :(得分:0)

我认为您在下面的行中输入了错误。

document.getElementById('comboA').addEventListener('change', function() {
  const button = document.querySelector('button.js-addcart-detail');
  button.dataset.sellyProduct = this.value; // `this` is the element receiving the event
});

{ % for post in posts %} {% include '_post.html' %} {% endfor %} 之前{后有空格,这就是为什么%标签未被识别并因此for标签给出错误的原因。

应为:

endfor

答案 1 :(得分:0)

在第二个for循环中,您有错字

{ % for post in posts %}
       {% include '_post.html' %}

      {% endfor %}

应如下所示:

    {% for post in posts %}
   {% include '_post.html' %}
{% endfor %}

原因:由于{之后%之前有空格,因此Jinja无法将其识别为endfor标记。从而给您错误。

答案 2 :(得分:0)

搜索此错误消息的人可能还想知道,如果您不小心使用括号而不是大括号,可能会导致相同的错误:

(% for ... %}

这似乎是一个愚蠢的错误,但多年来我已经犯了几次并且被难住了。很容易扫描代码太快而看不到有问题的括号。