Hi,

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 <peppepega...@gmail.com>:

> Thanks.
> My solution:
>
> urls.py
> url(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.py
> def 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 resp
> it 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.py
>>
>> listafile = os.listdir('static/dati')
>>
>>         fileok=[]
>>         context={}
>>         i=0
>>         for 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, anno
>>
>>         for 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]=line
>>                             i=i+1
>>         #print "context", context
>>
>>         d2 = {  k:v.split(";") for k,v in context.items() }
>>         j=0
>>         datilist={}
>>         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+1
>>
>>         return render_to_response('showdata.html',
>> context_instance=RequestContext(request, {'dictdati': datilist} ))
>>
>>     else:
>>
>>         return render_to_response('home.html',
>> context_instance=RequestContext(request, {'var': d} ))
>>
>>
>> def showdata(request):
>>     return render_to_response('showdata.html',
>> context_instance=RequestContext(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.
>>
> --
> 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+unsubscr...@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/1fca0b1e-a952-4694-9bdb-177f1ac6b69c%40googlegroups.com
> <https://groups.google.com/d/msgid/django-users/1fca0b1e-a952-4694-9bdb-177f1ac6b69c%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
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+unsubscr...@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.

Reply via email to