视图函数:直接返回csv或excel

 1 import codecs
 2 from django.shortcuts import HttpResponse
 3 
 4 
 5 def csv_response(data_list: [tuple, tuple, ...], filename: str):
 6     """
 7     :param data_list: Such as [('name', 'age'), ('test1', 18), ('test2', 20)]
 8     :param filename: xxx.csv
 9     :return: HttpResponse object
10     """
11     try:
12         response = HttpResponse(content_type='text/csv;charset=utf-8')
13         response.write(codecs.BOM_UTF8)
14         response['Content-Disposition'] = f'attachment; filename="{filename}"'
15         writer = csv.writer(response, quoting=csv.QUOTE_ALL, delimiter=',', quotechar='"')
16         for row in data_list:
17             writer.writerow(row)
18         return response
19     except Exception as e:
20         raise e
21 
22 
23 def excel_response(data_list: [tuple, tuple, ...], filename: str):
24     """
25     :param data_list: Such as [('name', 'age'), ('test1', 18), ('test2', 20)]
26     :param filename: xxx.xlsx
27     :return: HttpResponse object
28     """
29     try:
30         response = HttpResponse(content_type='charset=utf-8')
31         response.write(codecs.BOM_UTF8)
32         response['Content-Disposition'] = f'attachment; filename="{filename}"'
33         writer = csv.writer(response)
34         writer.writerows(data_list)
35         return response
36     except Exception as e:
37         raise e

 

posted @ 2021-01-06 16:49  士为知己  阅读(69)  评论(0)    收藏  举报