django如何取用户上传的头像

Posted onlyhold

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django如何取用户上传的头像相关的知识,希望对你有一定的参考价值。

在用户信息管理的过程中,如果需要修改用户的头像就需要把用户上传的头像保存在数据库中,django中可以对form定义为文件的时候自动对上传的文件进行保存的。

针对这个特性,可以利用form定义一个文件类型的image,把这个字段取出来实际就是内存中的文件:

1、先定义一个form专门用来对上传文件的处理

class UploadImageForm(forms.ModelForm):
class Meta:
model = UserProfile #继承UserProfile类
fields = [‘image‘] #对image字段进行form处理

2、定义修改用户头像的view函数
class UploadImageView(LoginRequireMixin,View):
"""
用户修改头像
"""
def post(self, request):
image_form = UploadImageForm(request.POST, request.FILES, instance= request.user)#这里不同的是第二个参数,之前只需要传request.POST,但对于文件来说还需要传文件的上传地址,这个参数很重要,
因为对于input和文件上传,文件是放在request的不同地方的,文件是存在request.FILES这个变量当中的,modelform是可以直接保存到数据库当中的,instance这个参数是实例化对象,传的是modelform类里面指定的UserProfile
对象即request.user
        if image_form.is_valid():  #判断image_form是否可以
image_form.save()
return HttpResponse("{‘status‘:‘success‘}", content_type=‘application/json‘)
else:
return HttpResponse("{‘status‘:‘fail‘,‘msg‘:‘添加出错‘}", content_type=‘application/json‘)

<form class="clearfix" id="jsAvatarForm" enctype="multipart/form-data" autocomplete="off" method="post" action="{% url ‘users:image_upload‘ %}" target=‘frameFile‘>
<label class="changearea" for="avatarUp">
<span id="avatardiv" class="pic">
<img width="100" height="100" class="js-img-show" id="avatarShow" src="{{ MEDIA_URL }}{{ request.user.image }}"/>
</span>
<span class="fl upload-inp-box" style="margin-left:70px;">
<span class="button btn-green btn-w100" id="jsAvatarBtn">修改头像</span>
<input type="file" name="image" id="avatarUp" class="js-img-up"/>
</span>
</label>
{% csrf_token %}
</form>
提交头像是通过form来的,form的这个字段 enctype="multipart/form-data" 一定要是这个类型,这样才会把文件类型传递到我们的后台
method="post" action="{% url ‘users:image_upload‘ %}"这两个参数也要这么填
 <input type="file" name="image" id="avatarUp" class="js-img-up"/>这里的name必须是“image”,这里很重要。



 

以上是关于django如何取用户上传的头像的主要内容,如果未能解决你的问题,请参考以下文章

Django用户头像上传

Django项目实战之用户头像上传与访问

Django学习总结(Week01-结)

java web开发中 用户上传头像如何实现,尽量详细些。。。。谢谢各位大侠!

django头像上传预览功能

java web开发中 用户上传头像如何实现,尽量详细些。。。。谢谢各位大侠!