使用 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 作为参数插入字符串时使用单引号。