最近学习了Django,并且还自己做了个教学资源管理系统,感兴趣的朋友可以访问项目的github
在看学习视频或教程的时候只是学了一些基本功能,然后在实现一个比较大的项目过程中还是有很多坑的,在此专门花一些时间记录一下学习过程中遇到的坑和搜索到的解决方案,这样以后能及时查找对应的解决方案。
一、下载文件不显示文件名的问题(只显示“下载”两个字而不是实际文件名)
我找了两种解决方案
1、使用escape_url_path
比如你要下载一个excel文件,可以使用下面的方法
from django.utils.encoding import escape_uri_path
response = HttpResponse()
response['Content-Type'] = 'application/vnd.ms-excel'
response['Content-Disposition'] = "attachment; filename*=utf-8''{}".format(escape_uri_path(file_name))
但是这个方法在下载其他格式的文件的时候就不顶用了…
2、使用urlquote
这个方法可以用于多种格式的文件下载,反正我试了好几种格式都没啥问题
from django.utils.http import urlquote
file = open(file_path, 'rb')
response = FileResponse(file)