在我的view.py中,我有两个函数,一个处理来自表单的输入并输出过滤列表,另一个应该将该列表导出为CSV。使用Django生成CSV文件(动态内容)
这是我的第一个函数的返回:
return render_to_response('templateX.html',
{
'queryset': queryset,
'filter_form': filter_form,
'validated': validated,
},
context_instance = RequestContext(request)
)
这里是出口功能:
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
我不知道如何从我的第一个功能得到查询集,其中包含我想要的CSV项目列表,并在我的export_to_csv函数中使用它。 或者最好的办法是结合这两个功能,并让用户点击一个复选框,无论他/她想下载一个CSV文件。 任何帮助,将不胜感激。
我试过这种方式,但是当我点击我的“导出”按钮,它会转到url:localhost:8000/cdr/export_csv,它会丢失所有的GET请求,因此没有处理queryset,所以我的CSV文件是空的。那么,我的“导出”按钮如何发送所有请求,就好像我点击了我的“搜索”按钮? – chiurox 2010-11-02 00:04:53
您的导出按钮应该:1)定位导出URL并包含查询参数;或者2)作为具有查询参数的表单的一部分,如果需要,可以隐藏字段。由于我不完全清楚你的页面是如何相互关联的,因此我很难提出具体的建议。 – 2010-11-02 04:10:36
是的,我决定按照你描述的方式来做这件事,作为你的第一选择。现在'隐藏的领域',这很有趣,稍后我会遇到类似的情况。 – chiurox 2010-11-03 13:08:35