我有一个Django应用程序,它生成一个数据表。我有一个窗体,您可以在其中输入参数,然后单击一个按钮查看结果,或者单击另一个按钮下载CSV。看到结果是可行的,但下载CSV不是
我在views.py中处理响应,设置内容类型和配置,然后返回响应。它不下载CSV,而是将数据显示为文本(我尝试了StreamingHttpResponse和纯HttpResponse。)在处理传入参数的URL时,同样的代码可以工作。所以,我尝试了一个HttpResponseRedirect,但它什么也没做。我甚至试着只重定向到一个普通的网址,没有效果。我相信响应类型被忽略了,但我不知道为什么
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>
视图.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技能很弱
我解决了问题。 views.py中的代码(我从某处复制了一部分)正在从表单处理方法的返回值创建一个新的HttpRequest对象
通过将最后一行更改为只返回响应,它可以按预期工作。抱歉浪费了大家的时间
相关问题 更多 >
编程相关推荐