Wewnątrz mojego pliku view.py mam dwie funkcje, jedną, która przetwarza dane wejściowe z formularza i wyświetla przefiltrowaną listę, a drugą, która ma wyeksportować tę listę do pliku CSV.Generowanie pliku CSV za pomocą Django (zawartość dynamiczna)
Oto powrót mojej pierwszej funkcji:
return render_to_response('templateX.html',
{
'queryset': queryset,
'filter_form': filter_form,
'validated': validated,
},
context_instance = RequestContext(request)
)
Oto funkcja eksportujący:
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
Nie jestem pewien, jak uzyskać queryset z mojej pierwszej funkcji, który zawiera listę elementów, które chcę w moim pliku CSV i wykorzystuję w funkcji export_to_csv. A może najlepszym sposobem byłoby połączenie tych dwóch funkcji i aby użytkownik kliknął pole wyboru, czy chce pobrać plik CSV. Każda pomoc będzie doceniona.
Próbowałem go w ten sposób, ale kiedy klikam na mój przycisk "eksport", który przechodzi do adresu URL: localhost: 8000/cdr/export_csv, to traci wszystkie żądania GET iw konsekwencji nie ma przetwarzania zapytania, więc mój Plik CSV jest pusty. Jak więc mój przycisk "eksportuj" może wysłać wszystkie zapytania, tak jakbym kliknął przycisk "szukaj"? – chiurox
Przycisk Eksportuj powinien 1) adresować eksportowany adres URL i zawierać parametry zapytania lub 2) być częścią formularza, który ma parametry zapytania, jako ukryte pola, jeśli to konieczne. Trudno jest mi przedstawić konkretne zalecenie, ponieważ nie jestem całkowicie pewien, w jaki sposób twoje strony odnoszą się do siebie nawzajem. –
Tak, zdecydowałem się zrobić to tak, jak opisałeś jako swoją pierwszą opcję. Teraz "ukryte pola", ciekawe, na to później przyjrzę się, gdy natknę się na podobną sytuację. – chiurox