您好,我无法在模板中显示我的列表。在控制台中它打印所有。但是当我在for循环后进行打印时,我只得到列表的最后一行。
这是我的代码:
if 'process_udr' in request.POST:
#API Url for UDR History
apiUrl_udr ='http://apiurl'
#API Get Variable for UDR History
response_udr = urllib2.urlopen(apiUrl_udr)
reader = csv.reader(response_udr)
for udr_rows in reader:
print udr_rows
payload = {'usr': usr, 'usrpw': usrpw, 'response': response, 'response_2': response_2, 'response_udr': response_udr, 'udr_rows': udr_rows,}
return render_to_response(template, payload, context_instance=RequestContext(request))
else:
None
我看到控制台中for循环打印的结果:
['09/18/14', '08:00:00', '09/18/14', '08:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '57565106', '0', '0', '19854']
['09/18/14', '09:00:00', '09/18/14', '09:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '71792666', '0', '0', '20994']
['09/18/14', '10:00:00', '09/18/14', '10:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '32902589', '0', '0', '30552']
['09/18/14', '11:00:00', '09/18/14', '11:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '46560924', '0', '0', '26552']
['09/18/14', '12:00:00', '09/18/14', '12:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '76349057', '0', '0', '52998']
['09/18/14', '13:00:00', '09/18/14', '13:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '77010644', '0', '0', '20510']
['09/18/14', '14:00:00', '09/18/14', '14:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '78546837', '0', '0', '15008']
['09/18/14', '15:00:00', '09/18/14', '15:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '79770873', '0', '0', '30726']
['09/18/14', '16:00:00', '09/18/14', '16:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '75913522', '0', '0', '23696']
['09/18/14', '17:00:00', '09/18/14', '17:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '19052209', '0', '0', '17656']
这实际上是在for循环之后打印的内容。
['09/18/14', '17:00:00', '09/18/14', '17:00:00', 'XXXXXXXXXXX', 'GRP-XXXXXXXXXXX', 'DEFAULT', 'spostmv', '19052209', '0', '0', '17656']
这是我的模板代码:
{% for udr_row in udr_rows %}
{{udr_row}}
{% endfor %}
非常感谢任何帮助。
答案 0 :(得分:2)
把
udr_rows = reader
之后...应该成功。您只打印最后一个值
答案 1 :(得分:2)
问题出在您使用此循环将其打印到控制台后:
for udr_rows in reader:
print udr_rows
文件指针位于文件的末尾 - 这就是为什么没有任何内容发送到您的模板。将reader对象直接转换为列表,然后将其发送到您的模板:
reader = csv.reader(response_udr)
payload = {'usr': usr,
'usrpw': usrpw,
'response': response,
'response_2': response_2,
'response_udr': response_udr,
'udr_rows': list(reader)}
您还应该使用render
shortcut,而无需将响应发送到您的模板;您应该启用request context processor,您的模板将自动获取请求对象。
这种解决方案有点工作,但我需要抓住每个列表,而不是放 一切都列在一个列表中,如果这是有道理的。从它打印时 因为,每个都是我认为的清单。我想这样做,所以我可以风格化 列入带标题的表格
您在模板中获得的是列表清单,因此您可以很容易地创建一个表格:
<table>
<thead>
<tr>
<th>Column 1</th>
<th>Column 2</th>
...
<th>Column N</th>
</tr>
</thead>
<tbody>
{% for row in udr_rows %}
<tr>
{% for item in row %}
<td>{{ item }}</td>
{% endfor %}
</tr>
{% endfor %}
</tbody>
</table>
答案 2 :(得分:1)
您正在从for循环打印
rows = []
for udr_rows in reader:
print udr_rows
rows.append(udr_rows)
因此udr_rows
的值将是最后一行或reader
。
请更改有效负载以获取reader
而不是udr_rows
。
payload = {'usr': usr, 'usrpw': usrpw, 'response': response, 'response_2': response_2, 'response_udr': response_udr, 'udr_rows': rows,}