2016-03-03 74 views
0

我有一个列表,其字典为元素。渲染失败。有人可以帮助这里。非常感谢。jinja2渲染报告变量未定义

{% for i in mylist if 'name' in i %} 
 
    {% set v = i['name'] %} 
 
{% else %} 
 
    {% set v = 'notfound' %} 
 
{% endfor %} 
 
{% set mydict = { 'name' : v } %}

它总是报告说,V是没有定义。真令人困惑。

感谢您的帮助。

+0

你应该尝试** **定义'v'外'for'和'else'集团。 – purplepsycho

+0

谢谢你先回复。但是,在外界定义v不起作用。下面是更新的代码片断,v被分配给'预定义',这不是预期的。 – Zhenhua

回答

0

这背后的原因是jinja2范围。这是解决方法。

{% set vlist = [] %} {% set mylist = [ {'name':'myvalue'} ] %} {% for i in mylist if 'name' in i %} {% do vlist.append(i['name']) %} {% break %} {% else %} {% do vlist.append('notfoundinlist') %} {% endfor %}