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

时间:2016-10-30 16:10:15

标签: flask

大家,我在Flask遇到了一个问题。 mysql中有一个名为category的表,我查询了所有这些表,然后将它们传递给a.html,如下所示:

return render_template('admin_index.html', username=session.get('username'), categories=categories)

在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 %}
            ]
        }
    ]
};

但是当我跑这个时,我收到了一个错误:

  

jinja2.exceptions.TemplateSyntaxError:期望令牌':',得到'}'

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

{{ a is {{ b }} }}

有什么方法可以嵌套吗?

1 个答案:

答案 0 :(得分:3)

你已经在jinja表达中。因此执行以下代码:

url_for("admin.category", id={{category.id}} _external=True)

由于{它需要字典,因此错误。

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

url_for("admin.category", id=category.id, _external=True)

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