У меня есть приложение Django, которое генерирует таблицу данных.У меня есть форма, где вы вводите параметры и нажимаете одну кнопку, чтобы увидеть результаты или другую, чтобы загрузить CSV.Наблюдение за результатами работает, но загрузка CSV не выполняется.
Я обрабатываю ответ в views.py, задаю тип содержимого и расположение и возвращаю ответ.Вместо загрузки CSV, он отображает данные в виде текста.(Я пробовал как StreamingHttpResponse, так и обычный HttpResponse.) Точно такой же код работает при обработке URL-адреса, передающего параметры.Итак, я попробовал вместо HttpResponseRedirect, и он ничего не делает.Я даже попытался просто перенаправить на простой URL, безрезультатно.Я считаю, что тип ответа игнорируется, но я не знаю, почему.
html:
<form action="" method="post" class="form" id="form1">
{{ form.days }} {{ form.bgguserid }}
<input type="submit" value="Go!" id="button-blue"/>
<input type="submit" name="csv-button" value="CSV" id="csv-button"/>
</form>
views.py попытка 1:
def listgames(request, bgguserid, days=360):
if 'csv-button' in request.POST:
# create CSV in variable wb
response = StreamingHttpResponse(wb, content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="collectionvalue.csv"'
return response
попытка2, то же самое, но с:
response = HttpResponseRedirect ('/collection/{0}/csv/{1}/'.format(bgguserid,days))
Я открыт для других решений, таких как перенаправление на стороне клиента на работающий URL, но я не хочу терять проверку формы и мой HTML /навыки javascript слабые.