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 }} }}
有什么方法可以嵌套吗?
答案 0 :(得分:3)
你已经在jinja表达中。因此执行以下代码:
url_for("admin.category", id={{category.id}} _external=True)
由于{
它需要字典,因此错误。
要使用category.id
的值,只需省略大括号:
url_for("admin.category", id=category.id, _external=True)
另请注意,您在“_external”之前忘记了,
。