解决了“嵌套错误”问题。在由jinja for循环创建的HTML表中

时间:2014-07-30 21:11:17

标签: html jinja2

如何使用带有Jinja模板和html表的烧瓶在网站上显示sql表?

以下是我的脚本代码" profile.html"

我无法打印表格#34;用户"中的值。我收到错误:

  

TemplateSyntaxError:遇到未知标记' endblock'。你可能   犯了一个嵌套错误。 Jinja期待这个标签,但目前   寻找' endfor'或者'否则'。最里面的块需要   关闭是' for'。

我认为问题可能在于{% for user in users %}{% endfor %}与jinja模板无关的行:

{% extends "layout.html" %}
{% block content %}
  <div class="jumbo">
    <h2>Profile<h2>
  </div>

  <table class="table">
  <thead>
          <tr>
            <th>uid</th>
            <th>firstname</th>
            <th>lastname</th>
            <th>email</th>

          </tr>
    </thead>
    <tbody>
          {% for user in users %}
          <tr>
            <td>{{ user.uid }}</td>
            <td>{{ user.firstname }}</td>
            <td>{{ comment.lastname }}</td>
            <td>{{ user.email }}</td>

          </tr>
    </tbody>  
   </table>    
          {% endfor %}
{% endblock %}

如何编辑它们以在网页上显示我的SQL表?

1 个答案:

答案 0 :(得分:3)

<table><tbody>开头标记位于for循环之外,而</table></tbody>结束标记位于for循环内。这意味着虽然您只有一个<table>开始标记,但您在每行之后关闭该标记。浏览器不知道如何处理所有这些额外的结束标记,因此它呈现一行包含一行,然后将其余行呈现在表外。要解决此问题,您需要将{% endfor %}代码重新定位到</tbody></table>结束标记之前:

{% for user in users %}
<tr>
  <td>{{ user.uid }}</td>
  <td>{{ user.firstname }}</td>
  <td>{{ user.lastname }}</td>
  <td>{{ user.email }}</td>
</tr>
{% endfor %}

您展示的模板不会产生您指明的TemplateSyntaxError,但如果没有此更改,您的代码将无法正确呈现。