python - 使用 Django 生成 CSV 文件(动态内容)

标签 python django csv

在我的 view.py 中,我有两个函数,一个处理来自表单的输入并输出过滤后的列表,另一个应该将此列表导出为 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   

我不确定如何从我的第一个函数中获取queryset,它包含我想要在 CSV 中的项目列表并在我的 export_to_csv 函数中使用它。 或者最好的方法是将这两个功能结合起来,让用户点击复选框是否要下载 CSV 文件。 任何帮助将不胜感激。

最佳答案

我建议将这些组合成一个带有额外参数的 View 函数:

def my_view(request, exportCSV):
    # ... Figure out `queryset` here ...

    if exportCSV:
        response = HttpResponse(mimetype='text/csv')
        response['Content-Disposition'] = 'attachment;filename=export.csv'
        writer = csv.writer(response)
        for cdr in queryset:
            writer.writerow([cdr['calldate'], cdr['src'], cdr['dst'], ])
        return response
    else:
        return render_to_response('templateX.html', {'queryset': queryset,
            'filter_form': filter_form, 'validated': validated},
            context_instance = RequestContext(request))

然后,在您的 urls.py 中,将如下内容放入您的 urlpatterns:

url(r'^form', 'my_view', {"exportCSV": False}, name="form"),
url(r'^csv', 'my_view', {"exportCSV": True}, name="export"),

关于python - 使用 Django 生成 CSV 文件(动态内容),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4072574/

相关文章:

python - 单击 python 我如何从命令行读取 json 之类的参数

python - 强制正确使用 python Enum

python - 仅获取Django中相关对象的某些字段

python - 如何使用 Python 从 url 打开 .csv 文件?

java - 在Java中使用正则表达式验证csv文件

python - 将自定义字段添加到 Django 模型(不更改源代码)

python - 使用 PySimpleGUI、MatPlotLib 和 tkinter 绘制代码在选择函数时崩溃

python - 模板语法错误 : No module named braintree in paypal template?

django-extensions shell_plus 自动加载

python - 在 pandas 中使用文本限定符