Innerhalb meiner view.py habe ich zwei Funktionen, eine, die Eingabe von einem Formular verarbeitet und eine gefilterte Liste ausgibt, und eine andere, die diese Liste in CSV exportieren soll.Generieren von CSV-Datei mit Django (dynamischer Inhalt)
Hier ist die Rückkehr meiner ersten Funktion:
return render_to_response('templateX.html',
{
'queryset': queryset,
'filter_form': filter_form,
'validated': validated,
},
context_instance = RequestContext(request)
)
Hier ist die Exportfunktion:
def export_to_csv(request):
# get the response object, this can be used as a stream.
response = HttpResponse(mimetype='text/csv')
# force download.
response['Content-Disposition'] = 'attachment;filename=export.csv'
# the csv writer
writer = csv.writer(response)
qs = request.session['queryset']
for cdr in qs:
writer.writerow([cdr['calldate'], cdr['src'], cdr['dst'], ])
return response
Ich bin nicht sicher, wie die queryset von meiner ersten Funktion zu erhalten, Das enthält eine Liste der Elemente, die ich in meiner CSV-Datei haben möchte, und verwende sie in meiner export_to_csv-Funktion. Oder würde diese beiden Funktionen am besten kombiniert werden und der Benutzer auf ein Kontrollkästchen klicken, ob er eine CSV-Datei herunterladen möchte. Jede Hilfe wäre willkommen.
Ich habe es auf diese Weise versucht, aber wenn ich auf meinen "Export" -Button klicke, der zur URL geht: localhost: 8000/cdr/export_csv, verliert es alle GET-Anfragen und als Folge gibt es keine Verarbeitung von queryset, also meine Die CSV-Datei ist leer. Wie kann also mein "Export" -Button alle Anfragen senden, als würde ich auf meinen "Suchen" -Button klicken? – chiurox
Ihre Export-Schaltfläche sollte entweder 1) auf die Export-URL und die Abfrage-Parameter, oder 2) Teil eines Formulars, das die Abfrage-Parameter, als versteckte Felder, wenn nötig. Es ist schwer für mich, eine spezifische Empfehlung zu geben, da ich nicht ganz klar bin, wie Ihre Seiten zueinander stehen. –
Ja, ich habe beschlossen, es so zu machen, wie Sie es als Ihre erste Option beschrieben haben. Nun, "versteckte Felder", das ist interessant, ich werde später darauf schauen, wenn ich auf eine ähnliche Situation stoße. – chiurox