如何将csv文件解析为django模板并按以下方式对其进行排序:
myfile.csv
status, date, user, rating
Registered, 12-10-2016, user1, 8.75
Registered, 22-05-2016, user2, 9.23
Registered, 19-11-2016, user3, 7.00
目前我正在尝试这样做:
Views.py
args = {}
file_url = urllib2.Request("http://server.local:8000/static/myfile.csv", None, {'User-Agent': 'Mozilla/5.0'})
file_url_response = urllib2.urlopen(file_url)
pre_reader = csv.reader(file_url_response)
args['list'] = pre_reader
return render_to_response('template.html', args)
template.html
{% for row in list %}
<p>
{% for item in row %}
{{ item }}
{% endfor %}
</p>
{% endfor %}
呈现的HTML响应是:
状态,日期,用户,评级
已注册,2016年10月12日,用户1,8 .75
已注册,22-05-2016,user2,9.23
已注册,19-11-2016,user3,7.00
但我想做这样的事情:
<table>
{% for row in list %}
<tr>
<td>
{{ row.status }}
</td>
<td>
{{ row.date }}
</td>
<td>
{{ row.user }}
</td>
<td>
{{ row.rating }}
</td>
</tr>
{% endfor %}
</table>
如果我可以按价值订购,那么用户可以按日期或评级
订购结果答案 0 :(得分:1)
在您的视图功能中执行此操作。
...
csv_dict = {rows[0]:rows[1] for rows in pre_reader}
args['csv_dict'] = csv_dict
...
然后您将在模板中使用dict,您可以使用regroup
标记重新排序。 https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#regroup
答案 1 :(得分:0)
您可以使用{{row.0}}之类的内容,请参阅Variables and lookups,只需将模板更改为 的 template.html 强>:
<table>
{% for row in list %}
<tr>
<td>
{{ row.0 }}
</td>
<td>
{{ row.1 }}
</td>
<td>
{{ row.2 }}
</td>
<td>
{{ row.3 }}
</td>
</tr>
{% endfor %}
</table>