2

更改的问题:2012 年 5 月 5 日下午 2:34(太平洋标准时间)

我想知道是否可以从表单 POST 数据中呈现模板,并在该模板中提供一个按钮/链接,指向模板中使用的相同 POST 数据的 Excel 电子表格。

我已经使用 POST 进行了 Excel 下载,并使用 POST 渲染了一个模板,但是我希望在按下表单的提交按钮时发生以下情况: 1. 将信息从视图发送到模板,拥有模板呈现信息,在模板中有一个按钮/链接,单击该按钮/链接时,会弹出一个窗口,询问用户是否要打开/保存 .XLS 文件。

我用来执行每个操作的代码如下:
1 在新 URL 中呈现模板
return render_to_response('report/result.html', {long dictionary}, context_instance=RequestContext(request))

2 使用模板导出为 .XLS 文件:
response2 = render_to_response('report/result.html', {long dictionary}, context_instance=RequestContext(request))
filename = "ToolboxReport%s.xls" % (datetime.now())
response2['Content-Disposition'] = 'attachment; filename='+filename
response2['Content-Type'] = 'application/vnd.ms-excel; charset=utf-8'
return response2

这是我的预期顺序: 1. 在选项页面:选择选项,单击生成报告按钮 2. 在结果页面:显示信息,显示按钮/链接以将此信息下载为 .XLS 3.(可选)单击下载按钮:打开/保存选项似乎下载与 .XLS 相同的信息

我似乎无法从选项页面获取 POST 数据以用于结果页面和 .XLS 下载。

4

2 回答 2

3

我在表单上使用了两个不同的按钮,一个用于列出结果,一个用于将结果导出到 excel

在表单模板中:

<input type="submit" name="list" value="List Results" />
<input type="submit" name="excel" value="Export to Excel" />

在我看来功能:

# process your post data here...

# end processing your post data
if request.REQUEST.get('excel'): 
    # excel button clicked
    result = '<your content result here>'
    response = http.HttpResponse(result.encode("<encoding>", 'ignore'), content_type='application/vnd.ms-excel;charset=<charset>')
    response['Content-Disposition'] = 'attachment; filename="reports.csv"'
    response['Expires'] = "Mon, 26 Jul 2013 05:00:00 GMT"
    return response
elif request.REQUEST.get('list'):
    # List button clicked
    return render_to_response(<some render param here>, <some context>, <etc>)
于 2012-05-09T08:52:12.433 回答
1

您只需要构建一个带有隐藏输入标签的表单,其中包含您从上一篇文章中获得的信息和一个提交按钮。添加一个附加参数来告诉您要下载的视图。

于 2012-05-05T12:24:50.383 回答