在浏览器中显示后将搜索结果导出到csv文件

时间:2016-02-18 16:17:14

标签: python django csv download export

我试图解决这个问题一个星期了,但找不到合适的解决方案。 我有一个搜索栏来输入基因ID(或者上传文件)。然后它查询数据库并返回这些基因之间的相互作用。我们在html页面上的矩阵中显示这些交互。 (我基本上返回一个python数组)。

现在我想包含一个导出按钮,用于在csv或文本文件中下载矩阵/表格,以便用户可以对其进行操作以进行进一步研究。

如何在不保存文件中的每个查询结果的情况下执行此操作? 因为在返回矩阵之后,python脚本(views.py)已经运行并且基因ID已经消失。

可以用jQuery完成吗?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:0)

您只需要提供一个包含当前网址和一个标记的链接,以表明它是下载csv请求而不是呈现页面请求:

def return_result(request):
    # your original query
    query = request.GET.get('id', None)
    if query:
        results = Model.objects.filter(field=query)

    response = request.GET.get('download', None)
    if response == 'csv':
        response = HttpResponse(content_type='text/csv')
        response['Content-Disposition'] = 'attachment; filename="somefilename.csv"'
        # create a csv
        return response
    else:
        context = {'results': results}
        return render(request, 'results.html', context)

在您的页面中,您创建了一个下载csv的链接,{{ request.get_full_path }}是从请求中获取当前网址:

<a href="{{ request.get_full_path }}&download=csv">Download as CSV</a>