发送csv文件通过邮件django



我想将csv文件附加到电子邮件。我写了一个这样的get方法:

def get(self, request, *args, **kwargs):
serializer = self.get_serializer(self.get_queryset(), many=True)
file_format = request.query_params.get("file_format", "csv")
if file_format == "csv":
data_file = export_to_csv(
serializer.data,
list(self.get_serializer().Meta.fields),
"students"),
)
return data_file

这个API生成一个链接来下载csv…但是当我PDB的数据文件,我发现它是<HttpResponse status_code=200, "text/csv">export_to_csv功能:

def export_to_csv(data, titles, file_name):
#This function will export the data in the form of csv file
response = HttpResponse(content_type="text/csv")
response["Content-Disposition"] = "attachment; filename={}.csv".format(file_name)
writer = csv.DictWriter(
response,
fieldnames=titles,
extrasaction="ignore",
)
# create dict from translation of headers
headers = {title: _(title).replace("_", " ").title() for title in titles}
# write translated headers
writer.writerow(headers)
# write data to csv file
for row in data:
writer.writerow(row)
return response

问题是我如何将生成的csv附加到电子邮件

参考这个,这是一个整洁的文档

https://docs.djangoproject.com/en/4.1/topics/email/django.core.mail.EmailMessage

你可以在电子邮件中附加文件名,这样你就可以发送附件了。

最新更新