Hi,
from django.core.files.storage import default_storage
-- I would recommend that you checkout how django uses storage backends. The reason for that is that if you would like to use your application with a cloud provider that has a storage solution - for example S3, your code won't work the way it is written now.
However if you just make some minor changes - it will work directly without any major problems.
Just do this:
view.py
from django.core.files.storage import default_storage
def download(request):
data = default_storage.open('static/tmp/dati.csv').read()
resp = HttpResponse(data, mimetype='application/x-download')
resp['Content-Disposition'] = 'attachment; filename=dati.csv'
return resp
Like I said, the reason for this is that you in the case don't have to handle the MEDIA_ROOT settings yourself and it all works the same anyway. Should you decide to move to a cloud provider that has some sort of storage - you can then use the django-storages package and easily connect it, without changing your code.
Regards,
Andréas
2017-09-07 10:33 GMT+02:00 giuseppe ricci <peppepegasus@gmail.com>:
Thanks.My solution:urls.pyurl(r'^download/$', 'views.download', name='download'),template.html<p><a href="/download/">Download dei dati</a><p><p><a href="home">Indietro</a></p>views.pydef download(request):data = open(os.path.join(settings.MEDIA_ROOT, 'static/tmp/dati.csv'), 'r').read() resp = HttpResponse(data, mimetype='application/x-download') resp['Content-Disposition'] = 'attachment; filename=dati.csv'return respit works!
Il giorno giovedì 31 agosto 2017 17:58:27 UTC+2, giuseppe ricci ha scritto:Hi guys, I need some help to insert a link to download a file. In a view I read data from a csv file and I show them in a table in a template. Under the table I need to insert, when there are data,a link similar as Download data and when user click it, he download the datafile, previously I wrote the same data in a csv file. You can see a part of interested view and the template to show data.In the code doesn't download anything.views.pylistafile = os.listdir('static/dati')fileok=[]context={}i=0for file in listafile:inizio=str(file[0:4]).strip()if inizio==anno:fileok.append(file)elif inizio=='coun':contaf=str(file[6:10]).strip()if contaf==anno:fileok.append(file)else:pass #print "File NON trovato", inizio, annofor nomefile in fileok:nomedato=str(nomefile[5:-4]).strip() if nomedato==tipodati:path2file=str(("static/dati/"+str(nomefile)).strip()) with open(path2file) as f:for line in f:riga = line.split(";")if riga[0]==cciaa:context[i]=linei=i+1#print "context", contextd2 = { k:v.split(";") for k,v in context.items() }j=0datilist={}field_names = ['Provincia CCIAA', 'Data Ora', 'Numero REA', 'Forma Giuridica', 'Count dati']f=open('static/tmp/dati.csv', 'w')writer = csv.writer(f) #questa definisce la variabile writer usata x scrivere i dati nel file csv!!!writer.writerow(field_names)while j<len(d2):datilist[j]=[d2[j][0], d2[j][3], d2[j][5], d2[j][7], d2[j][10].rstrip(), ''] #writer.writerow(datilist[j])j=j+1return render_to_response('showdata.html', context_instance=RequestContex t(request, {'dictdati': datilist} )) else:return render_to_response('home.html', context_instance=RequestContex t(request, {'var': d} )) def showdata(request):return render_to_response('showdata.html', context_instance=RequestContex t(request, context)) showdata.html<div class="container"><div class="jumbotron"><h1>Statistiche Dkey</h1><p>Ecco in forma tabellare i dati richiesti..</p><form method="post" action="/getdata/"><style>table { width: 90%; background-color: #FFFFFF; color: #000000; }th, td { width: 4%; }</style><table border="0" cellspacing="0" cellpadding="0" align="center"><thead><tr><th>Nome</th><th>Data_Ora</th><th>Numero</th><th>Forma</th><th>Count</th></tr></thead><tbody><tr>{% for key, item in dictdati.items %}{% for idx in item %}{% if idx != '' %}<td>{{ idx }}</td>{% else %}<tr><td></td></tr>{% endif %}{% endfor %}{% endfor %}<tr></tbody></table></form><p><a href="{{ MEDIA_URL }}/dati.csv">Download dei dati</a><p></div></div> <!-- /container -->Can someone give me some suggestion? Other posts didn't aided me.Thanks.To view this discussion on the web visit https://groups.google.com/d/--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com .
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users .msgid/django-users/1fca0b1e- .a952-4694-9bdb-177f1ac6b69c% 40googlegroups.com
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscribe@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAK4qSCfcyQdY-kTHPr1Z4W6ZWnpXV0UN6aTL3GXhvspdW61rkQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
No comments:
Post a Comment