Para generar un archivo CSV que funcione como una liga que permita descargar el archivo es necesario seguir los siguientes pasos:
1.- Crear la url
En el archivo donde se creen las ligas entre las clases y las url (lazy loading)
application = webapp.WSGIApplication([
("/csv",Csv),
], debug=False)
def main():
run_wsgi_app(application)
2.- Generar el CSV
En la clase Csv se genera el string y el handler para manejar las peticiones get del servidor.
import wsgiref.handlers
import StringIO
from google.appengine.ext import webapp
class Csv(webapp.RequestHandler):
def get(self):
out=StringIO.StringIO()
cabeceras="..." #defino las cabeceras de los campos del csv
out.write(cabeceras)
MisDatos="..."#Obtengo los datos de alguna fuente, muy probablemente del DataStore
for renglon in MisDatos:
csv=""
csv=csv+"..."+"|"# obtengo los datos necesarios agregandolos a la variable csv
#continuo asi....
csv=csv+"\n" #eol
out.write(csv)
#agrego los header para que se comporte como archivo
self.response.headers["Content-Type"] = "application/vnd.ms-excel"
self.response.out.write(out.getvalue())
Agrego un link en el template
<a href="/csv">csv</a>
y listo....

0 comentarios:
Publicar un comentario en la entrada