Cómo analizar el archivo csv en la plantilla de django y ordenarlos por:
miarchivo.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.00Actualmente estoy tratando de hacer cosas como esta:
Vistas.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)plantilla.html
{% for row in list %} <p> {% for item in row %} {{ item }} {% endfor %} </p> {% endfor %}La respuesta HTML procesada es:
estado, fecha, usuario, calificación
Registrado, 10-12-2016, usuario1, 8.75
Registrado, 22-05-2016, usuario2, 9.23
Registrado, 19-11-2016, usuario3, 7.00
Pero quiero hacer algo como esto:
<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>También sería genial si pudiera ordenar por valores, para que los usuarios puedan ordenar los resultados por fecha o por calificación
En su función de vista, haga esto.
... csv_dict = {rows[0]:rows[1] for rows in pre_reader} args['csv_dict'] = csv_dict ... Luego tendrá un dict en su plantilla que puede reordenar usando la etiqueta de regroup . https://docs.djangoproject.com/en/1.11/ref/templates/builtins/#regroup
Puede usar algo como {{row.0}}, vea Variables y búsquedas , simplemente cambie su plantilla a 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>