Skip to main content
 首页 » 编程设计

python之在django模板中解析和排序csv文件

2024年10月01日36unruledboy

如何将 csv 文件解析为 django 模板并按以下方式排序:

我的文件.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 响应是:

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


但是我想做这样的事情:

<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> 

如果我可以按值排序,那就太好了,这样用户就可以按日期或评分排序结果

请您参考如下方法:

在您的 View 函数中执行此操作。

... 
csv_dict = {rows[0]:rows[1] for rows in pre_reader} 
args['csv_dict'] = csv_dict 
... 

然后您的模板中将有一个字典,您可以使用 regroup 标签重新排序。 https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#regroup