Django Filefield 保存用户上传文件

网上关于Django Filefield 的文章很少。
今天踩了踩坑,给了一套Filefiled上传保存文件的方法。
跟一般web开发一样,上传的文件保存在请求体的某个字段中,通常为file字段
views.py中,可以这样获得上传的文件

1
2
3
# view.py
def post(self, request):
avatar = request.FILES.get("file")

这样avatar就存储了上传的文件,保存其实有很简单的方法,django替你封装好了:

1
2
3
4
5
# view.py
def post(self, request):
import datetime
user.avatar.save("{}_{}.jpg".format(user.id, datetime.datetime.now().strftime('%Y-%m-%d')), avatar)
user.save()

这里顺便对保存的数据进行了格式转化,调用了pythondatatime包,当然调用time包或者Djangotimezone包也是一样的。