在django模板中下载csv

Jér*_*eot 1 csv django

在django应用程序中,我需要显示搜索结果,并让用户下载结果的csv文件.
实际上我只是写了一个视图,它使用形式args通过ORM进行查询,并将结果显示在模板中的表中.

这里是视图的结尾:

return render_to_response(template, {'form': form, 'object_list': object_list}, context_instance=RequestContext(request))
Run Code Online (Sandbox Code Playgroud)

我想在表格下面添加一个链接,下载所提供结果的csv文件.我知道如何在python/django中创建一个csv文件,但不知道如何在模板中的结果中同时呈现它.

任何的想法??感谢提前回答任何问题.

And*_*ler 7

我的建议是在urls.py中为csv下载链接创建一个新条目,并将其连接到返回csv的视图.

然后在搜索结果的模板中,您可以链接到此新网址,传递与GET参数相同的搜索字词,您可以在CSV视图中使用这些参数再次生成结果.

为了减少重复,您现在拥有正常的html视图和返回相同数据的csv视图处理,您可以创建一个带有参数的视图,该参数指定它是应该返回渲染模板还是CSV结果.

您提到您已经知道如何执行此操作,但万一其他人偶然发现此页面,以下是视图如何返回CSV并使浏览器将其作为文件下载:

def csv_list(request):
    """ Renders a csv list  """
    response = HttpResponse(mimetype='text/csv')
    response['Content-Disposition'] = 'attachment; filename=file.csv'

    writer = csv.writer(response, dialect=csv.excel)
    writer.writerow(['col1', 'col2', 'col3'])
    return response
Run Code Online (Sandbox Code Playgroud)