Django导出CSV

解决CSV文件下载

  • 响应Content-Type类型需修改为text/csv告诉浏览器是Csv文件,而不是HTML
  • 响应会获得一个额外的Content-Disposition标头,其中包含CSV文件的名称。它将被浏览器用于开启“另存为……”对话框

案例
1.视图层

def text_csv(request):
    # 模拟输出CSV文件
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment;filename="test.csv"'
    # 模拟数据
    all_data = ['a', 'b', 'c', 'd']
    writer = csv.writer(response)
    writer.writerow(all_data)
    return response

案例:
页面显示的数据生成CSV,结合分页案例
复制分页视图函数,在其基础上修改

def test_pageout(request):
    # 分页视图导出案例
    ## 方案1 /test_page/num
    ## 方案2 /test_page?page=num
    page_num = request.GET.get('page', 1)
    all_data = ['a', 'b', 'c', 'd', 'e']
    # 初始化paginatort
    paginator = Paginator(all_data, 2)
    # 初始化 具体页码的page
    c_page = paginator.page(int(page_num))
    response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment;filename="page-%s.csv"'%(page_num)
    writer = csv.writer(response)
    for b in c_page:
        writer.writerow([b])
    return response

修改模板
在body下面添加

<body>
<a href="/make_page_csv?page={{ c_page.number }}">导出本页数据</a>

添加视图路由

urlpatterns = [
    path('make_page_csv', views.test_pageout) # 测试分页导出
]

网页效果
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

银行上班的法学程序猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值