Python 角度8+;Django RestFramework文件(csv)下载
我是个新手。我想下载一个CSV,点击下载按钮 django视图集Python 角度8+;Django RestFramework文件(csv)下载,python,django,angular,django-rest-framework,Python,Django,Angular,Django Rest Framework,我是个新手。我想下载一个CSV,点击下载按钮 django视图集 @action(detail=False, methods=['get']) def download_csv(self, request): data = { "student_data": [ { "roll_no": 12, "detail": {
@action(detail=False, methods=['get'])
def download_csv(self, request):
data = {
"student_data": [
{
"roll_no": 12,
"detail": {
"name": "Tom",
"address": "XYZ"
}
},
{
"roll_no": 8,
"detail": {
"name": "Ryan",
"address": "ABC"
}
},
{
"roll_no": 12,
"detail": {
"name": "Tom",
"address": "PQR"
}
}
]
}
response = HttpResponse(content_type='text/csv')
response['Content-Disposition'] = 'attachment; filename="emp_details.csv"'
writer = csv.DictWriter(response, fieldnames=['name', 'roll', 'address'])
writer.writeheader()
for i in data["student_data"]:
meta_data = i["detail"]
detail_dict = {}
detail_dict["name"] = meta_data["name"]
detail_dict["address"] = meta_data["address"]
detail_dict["roll"] = i["roll"]
writer.writerow(address)
return response
当我点击URL时http://localhost:8000/download_csv/ . 下载的CSV文件名为“emp_details.CSV”
现在我想把这个反应和anuglar结合起来。单击angular前端的下载按钮,我如何订阅此API端点并下载csv文件。这就是这个端点的响应(不是通常的JSON)。我能够解决它。用下面的代码 组成部分
import * as FileSaver from 'file-saver';
onDownloadClick()
{
this.serviceModule.download().subscribe(
(res) => {
let blob = new Blob([res], { type: 'text/csv' });
FileSaver.saveAs(blob, "example.csv")
}
);
}
服务
public download(): Observable<any> {
return this.http
.get(
"http://localhost:8000/download_csv/",
{ responseType: "arraybuffer" }
)
}
public download():可观察{
返回此文件。http
.得到(
"http://localhost:8000/download_csv/",
{响应类型:“arraybuffer”}
)
}
希望这对以后的人有帮助 python文件的开头是什么?在.ts文件中,当您执行.get时,您不需要输入python代码的名称吗?非常感谢。