Django -导出字典列表到CSV

bprjcwpo  于 2023-01-10  发布在  Go
关注(0)|答案(2)|浏览(87)

我在www.example.com上创建了一个字典列表views.py,

my_list= [
{'user': 1000, 'account1': 100, 'account2': 200, 'account3': 100},
{'user': 1001, 'account1': 110, 'account2': 100, 'account3': 250},
{'user': 1002, 'account1': 220, 'account2': 200, 'account3': 100},
]

我想把它导出到csv文件。

response = HttpResponse(content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename="mylist.csv"'

    writer = csv.writer(response)
    for data in my_list:
        writer.writerow(data)

    return response

我知道“for data in my_list”有错误。my_list包含所有键和值。
如何只获得my_list的密钥?或者有另一种方法将列表导出到csv?
(我使用的是django 2和python3.4)

xytpbqjk

xytpbqjk1#

你需要DictWriter

    • 演示:**
import csv
my_list= [
{'user': 1000, 'account1': 100, 'account2': 200, 'account3': 100},
{'user': 1001, 'account1': 110, 'account2': 100, 'account3': 250},
{'user': 1002, 'account1': 220, 'account2': 200, 'account3': 100},
]

with open(filename, "w") as infile:
    writer = csv.DictWriter(infile, fieldnames=my_list[0].keys())
    writer.writeheader()
    for data in my_list:
        writer.writerow(data)

with open(filename, 'rb') as infile:
    response = HttpResponse(infile, content_type='text/csv')
    response['Content-Disposition'] = 'attachment; filename=mylist.csv'
    return response
zazmityj

zazmityj2#

可以按如下方式使用DictWriter

my_list= [
    {'user': 1000, 'account1': 100, 'account2': 200, 'account3': 100},
    {'user': 1001, 'account1': 110, 'account2': 100, 'account3': 250},
    {'user': 1002, 'account1': 220, 'account2': 200, 'account3': 100},
]

response = HttpResponse(content_type="text/csv")
response["Content-Disposition"] = "attachment; filename=my_list.csv"

# writing to csv with DictWriter
writer = csv.DictWriter(response, fieldnames=my_list[0].keys())
writer.writeheader()
writer.writerows(my_list)

return response

相关问题