Wednesday, September 6, 2017

Re: Link to download a file

Thank you James for your reply..
So in my urls.py I insert a new entry:

url(r'^download/$', 'views.download')

and my view to download a file is:

def download(request):
file_path = 'static/tmp/' #settings.MEDIA_ROOT
return render_to_response('download.html', file_path+'dati.csv')

and the download.html is a simple page with a write Download file ok..
But in this manner I receive the error

TemplateDoesNotExist at /download/

static/tmp/dati.csv

Can you help me?
Thanks.


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+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/11d66199-3718-4117-a7ec-bc4163676b63%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment