在 flask 中,
@app.route('/test')
def test():
test = ['a','b','c','d','e','f','g',['1','2','3']]
return render_template('test.html',data=test)
这是我的模板:
{% for item in data %}
<tr>
<td>{{item.0}}</td>
<td>{{item.1}}</td>
<td>{{item.2}}</td>
<td>{{item.3}}</td>
<td>{{item.4}}</td>
<td>{{item.5}}</td>
<td>{{item.6}}</td>
</tr>
<tr>
<td colspan="5">{{ item[7][0]}}</td>
<td>{{ item[7][1]}}</td>
<td>{{ item[7][2]}}</td>
</tr>
{% endfor %}
但总是报错:
jinja2.exceptions.UndefinedError: str object has no element 7
如何获取列表中的列表?
看起来像jinja2 需要字符串,但它不能regonize python item[7][0] 格式。 我也尝试了 item.7.0 和 item.7[0] ,但同样的错误。
谢谢!
请您参考如下方法:
您向模板传递了一个包含 8 个元素(7 个字符串和另一个字符串列表)的列表。
然后在您的 Jinja 模板中迭代该列表:
{% for item in data %}
但是,在您的循环中,您试图单独访问每个列表成员,但这在循环的上下文中没有意义。
您的代码在没有 for 循环的情况下也能正常工作:
<tr>
<td>{{data.0}}</td>
<td>{{data.1}}</td>
<td>{{data.2}}</td>
<td>{{data.3}}</td>
<td>{{data.4}}</td>
<td>{{data.5}}</td>
<td>{{data.6}}</td>
</tr>
<tr>
<td colspan="5">{{ data[7][0]}}</td>
<td>{{ data[7][1]}}</td>
<td>{{ data[7][2]}}</td>
</tr>
输出:
<tr>
<td>a</td>
<td>b</td>
<td>c</td>
<td>d</td>
<td>e</td>
<td>f</td>
<td>g</td>
</tr>
<tr>
<td colspan="5">1</td>
<td>2</td>
<td>3</td>
</tr>
