我可以在 Flask 模板中嵌套变量吗?

Tre*_*Cat 2 flask

大家好,我在 Flask 中遇到了一个问题。mysql中有一个表名为category,我查询了所有的表,然后传给a.html,像这样:

return render_template('admin_index.html', username=session.get('username'), categories=categories)
Run Code Online (Sandbox Code Playgroud)

在 admin_index.html 中,我想列出所有这些,这是我的代码:

var _menus = {
    "menus": [
        {
            "menuid": "1",
            "icon": "icon-sys",
            "menuname": "category",
            "menus": [
                {% for category in categories %}
                    {
                        "menuid": "{{ category.id }}",
                        "menuname":"{{ category.name }}",
                        "icon": "icon-users",
                        "url": "{{url_for('admin.category', id={{category.id}} _external=True) }}"
                    },
                {% endfor %}
            ]
        }
    ]
};
Run Code Online (Sandbox Code Playgroud)

但是当我运行这个时,我得到了一个错误:

jinja2.exceptions.TemplateSyntaxError:预期的标记“:”,得到“}”

我尝试删除{{ category.id }},结果还可以,我怀疑不允许在 Flask 模板中嵌套变量,如下所示:

{{ a is {{ b }} }}
Run Code Online (Sandbox Code Playgroud)

有什么办法可以嵌套吗?

Wom*_*atz 5

你已经在一个 jinja 表达中。于是执行如下代码:

url_for("admin.category", id={{category.id}} _external=True)
Run Code Online (Sandbox Code Playgroud)

由于{它需要一本字典,因此出现错误。

要使用 的值,category.id只需省略大括号:

url_for("admin.category", id=category.id, _external=True)
Run Code Online (Sandbox Code Playgroud)

另请注意,您,在“_external”之前忘记了。