我已经看过以前的问题了,我无法找到问题的答案
我正在尝试显示一个2D列表,我之前在HTML中使用不同的列表。
我已经在其他列表中使用了类似的方法,但它不会显示,我只是得到了标题。
HTML:
<table class="listtable" >
<thead>
<tr>
<th>No</th>
<th>Account No</th>
<th>Time</th>
<th>Message</th>
</tr>
</thead>
{% for person in user %}
<tr>
{% for message in person %}
<td>{% autoescape off %}{{ message }}{% endautoescape %}</td>
{% endfor %}
</tr>
{% endfor %}
</table>
我在视图中打印了列表,所以我知道在视图中它是正确的。我100%确定我也使用了正确的变量 视图中的代码类似于:
user = get_data_from_other_source()
for item in user:
print(item)
打印件正好显示它应该是什么 列表是关闭的:
[4, '<account number>', '<time>', 'somestring']
[3, '<account number>', '<time>', 'somestring']
页面来源说:
<table class="listtable" >
<thead>
<tr>
<th>No</th>
<th>Account No</th>
<th>Time</th>
<th>Messages</th>
</tr>
</thead>
</table>
编辑:审核后的视图代码..
@login_required(login_url='/login')
def page_control(request):
acc_no = request.session['acc_no']
user = setup_page_control (acc_no)
for item in user:
print(item)
return render_to_response("<htmlfile>.html",
locals(),
context_instance=RequestContext(request))
def setup_user_control(acc_no):
messages = <outside magic>
user = reversed(messages)
return user
我从代码中挖了很多东西,并更改了变量名等。 我只删除了我100%肯定不是问题的东西
答案 0 :(得分:2)
您找到的问题的解释:
reversed()
返回反向iterator。这是 NOT 反转列表,如您所愿:
>>> a = [1,2,3,4,5]
>>> print reversed(a)
<listreverseiterator object at 0x...>
正如您所看到的,reverse(a)不是反向列表,而是实际的迭代器本身。为了得到你想要的反向列表,你可以使用:
user = list(reversed(messages))
# or
user = messages[::-1]
答案 1 :(得分:0)
我相信你的回答应该是这样的:
return render_to_response("<htmlfile>.html",
{'user':user},
context_instance=RequestContext(request))
答案 2 :(得分:0)
我发现了我的问题,但我不确定为什么会这样。 当我删除时:
user = reversed(messages)
模板愿意再次输出列表。非常奇怪。如果有人知道为什么,这将是一个很好的解释:)