zoukankan      html  css  js  c++  java
  • 108:生成和下载csv文件

    生成CSV文件:

    有时候我们做的网站,需要将一些数据,生成有一个CSV文件给浏览器,并且是作为附件的形式下载下来。以下将讲解如何生成CSV文件。

    生成小的CSV文件:

    这里将用一个生成小的CSV文件为例,来把生成CSV文件的技术要点讲到位。我们用Python内置的csv模块来处理csv文件,并且使用HttpResponse来将csv文件返回回去。示例代码如下:

    from django.http import HttpResponse, JsonResponse
    import json, csv
    
    
    def small_csv(request):
        response = HttpResponse(content_type='text/csv')
        response['Content-Disposition'] =  "attachment;filename='userinfo.csv'"
        my_write = csv.writer(response)
        my_write.writerow(['username','age'])
        my_write.writerow(['tom','21'])
        my_write.writerow(['jack','22'])
        return response

    这里再来对每个部分的代码进行解释:

    • 我们在初始化HttpResponse的时候,指定了Content-Type为text/csv,这将告诉浏览器,这是一个csv格式的文件而不是一个HTML格式的文件,如果用默认值,默认值就是html,那么浏览器将把csv格式的文件按照html格式输出,这肯定不是我们想要的。
    • 第二个我们还在response中添加一个Content-Disposition头,这个东西是用来告诉浏览器该如何处理这个文件,我们给这个头的值设置为attachment;,那么浏览器将不会对这个文件进行显示,而是作为附件的形式下载,第二个filename="somefilename.csv"是用来指定这个csv文件的名字。
    • 我们使用csv模块的writer方法,将相应的数据写入到response中。

    csv文件定义成模板:

    我们还可以将csv格式的文件定义成模板,然后使用Django内置的模板系统,并给这个模板传入一个Context对象,这样模板系统就会根据传入的Context对象,生成具体的csv文件。示例代码如下:

    模板文件:

    # 文件路径是:工程template目录下:
    {% for row in rows %}{{ row.0 }},{{ row.1 }}
    {% endfor %}

    视图函数:

    def template_csv(request):
        resp = HttpResponse(content_type='text/csv')
        resp['Content-Disposition'] = "attachment;filename='templateinfo.csv'"
        context = {
            'rows':
                [
                    ['username', 'age'],
                    ['bob',19],
                    ['marry', 20],
                ]
        }
        template =loader.get_template('template.txt')
        csv_template = template.render(context)
        resp.content = csv_template
        return resp
  • 相关阅读:
    IOS技能点之Foundation之NSString
    JavaScript学习笔记 -- ES6学习(二) let 和const
    JavaScript 学习笔记-- ES6学习(一)介绍以及Babel的使用
    JavaScript 学习笔记: 扩充类型的功能
    PHP学习笔记(八)
    PHP学习笔记(六)
    Less 官方文档学习笔记
    PHP学习笔记(五)
    PHP 学习笔记 (四)
    PHP 学习笔记 (三)
  • 原文地址:https://www.cnblogs.com/zheng-weimin/p/10415876.html
Copyright © 2011-2022 走看看