Thursday, August 31, 2017

Link to download a file

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/3e7a5919-f176-4789-a4dc-158e3bc906ae%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

No comments:

Post a Comment