使用 jinja2 从 for 循环中捕获特定元素
Catch specific element from for loop using jinja2
我在 html 上使用 jinja2 创建了一个 for 循环,显示了我的 sqlite 数据库中的用户列表:
{% for user in users %}
<tr>
<td>{{ user.id }}</td>
<td>{{ user.username }}</td>
<td>{{ user.email }}</td>
<td>
{% if user.admin == True: %}
<a href="{{ url_for('changePermission' }}"> Admin Icon </a>
{% else: %}
<a href="{{ url_for('changePermission' }}"> Not Admin Icon </a>
{% endif %}
</td>
</tr>
{% endfor %}
我想知道如何从单击 link 的行中选择特定用户?
我试图通过 url_for:
抓住它
<a href="{{ url_for('changePermission', user=user") }}"> Admin Icon </a>
但我在终端上收到这条消息:
jinja2.exceptions.TemplateSyntaxError: expected token ',', got 'string'
我不知道这样做更合适的方法是什么。
我认为这可能是因为语法错误,而不是与您的循环有关。您的 url_for
参数中似乎有一个额外的双引号:user=user"
应该是 user=user
。这个额外的引号具有关闭同样以双引号开头的 href
属性值的不良效果,将右方括号和大括号留在属性之外。您的 <a>
标签应如下所示:
<a href="{{ url_for('changePermission', user=user) }}">Admin Icon</a>
通常认为在 HTML 属性值中使用双引号是最佳做法,因此在使用 Jinja 作为参数插入字符串时使用单引号。
我在 html 上使用 jinja2 创建了一个 for 循环,显示了我的 sqlite 数据库中的用户列表:
{% for user in users %}
<tr>
<td>{{ user.id }}</td>
<td>{{ user.username }}</td>
<td>{{ user.email }}</td>
<td>
{% if user.admin == True: %}
<a href="{{ url_for('changePermission' }}"> Admin Icon </a>
{% else: %}
<a href="{{ url_for('changePermission' }}"> Not Admin Icon </a>
{% endif %}
</td>
</tr>
{% endfor %}
我想知道如何从单击 link 的行中选择特定用户? 我试图通过 url_for:
抓住它<a href="{{ url_for('changePermission', user=user") }}"> Admin Icon </a>
但我在终端上收到这条消息:
jinja2.exceptions.TemplateSyntaxError: expected token ',', got 'string'
我不知道这样做更合适的方法是什么。
我认为这可能是因为语法错误,而不是与您的循环有关。您的 url_for
参数中似乎有一个额外的双引号:user=user"
应该是 user=user
。这个额外的引号具有关闭同样以双引号开头的 href
属性值的不良效果,将右方括号和大括号留在属性之外。您的 <a>
标签应如下所示:
<a href="{{ url_for('changePermission', user=user) }}">Admin Icon</a>
通常认为在 HTML 属性值中使用双引号是最佳做法,因此在使用 Jinja 作为参数插入字符串时使用单引号。