码迷,mamicode.com
首页 > Web开发 > 详细

django如何取用户上传的头像

时间:2018-01-20 12:33:23      阅读:182      评论:0      收藏:0      [点我收藏+]

标签:type   image   post   enc   地方   文件类型   定义   pos   method   

在用户信息管理的过程中,如果需要修改用户的头像就需要把用户上传的头像保存在数据库中,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如何取用户上传的头像

标签:type   image   post   enc   地方   文件类型   定义   pos   method   

原文地址:https://www.cnblogs.com/onlyhold/p/8320064.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!