django改变用户头像
添加字段
为了更改用户的头像,我们可以在我们的用户模块中添加用户头像字段
img_url=models.CharField(max_length=100,verbose_name='img_url',default='')
这里我max_length设了100,不过如果为了让数据库的查询更快,这个属性应该越小越好
这里用的是url,因为这个项目中图片上传都是用的fdfs,至于怎么使用fdfs请参考我的博客https://blog.csdn.net/lvbu89757/article/details/94735057
添加字段以后别忘记迁移
添加视图逻辑
因为修改用户头像需要登录,而且只需要改变获取到的用户的单个字段,所以就简单写了一个视图,这个视图还没有写验证
class User_icon(APIView):
permission_classes = [IsAuthenticated]
def post(self,request):
通过jwt验证获取用户信息
user_obj=self.request.user
创建fdfs对象
fdfs=fdfs_storage.FastdfsStorageClass()
通过fdfs储存post请求中的img信息,返回一个图片url
ret=fdfs.save('mytest',request.data.get('img'))
把返回的url存到数据库中
user_obj.img_url=ret
user_obj.save()
同时返回这个url到前端
return Response(ret)
注册视图到url中
在用户模块的urls.py文件中添加
from django.conf.urls import url,include
from . import views
urlpatterns = [
.................
url(r'^usericon',views.User_icon.as_view())
]
用户中心添加用户头像
js
$(function () {
token=localStorage.token
alert(token)
var password
$.get()
初始化界面时需要往网页中添加的信息
$.ajax({
url:'http://127.0.0.1:8000/loginuser/',
method:'GET',
headers:{
'Authorization':'JWT '+token
},
success(data){
console.log(data)
console.log(typeof (data))
$('#cusername').text(data.username)
$('#usericon').attr({'src':'http://127.0.0.1:8888/'+data.img_url})
id1=data.id
email1=data.email
这个是之前邮箱验证的部分
$('#active_button').click(function () {
$.ajax({
url:'http://127.0.0.1:8000/email/',
headers:{
'Authorization':'JWT '+token
},
type:'PUT',
data: {
_method: 'PUT',
id:id1,
email:email1
},
dataType:'json',
success:function () {
alert('okay')
}
})
})
这是改变用户头像的ajax
$('#usericon').click(function () {
$('#hide_box').css('display','block')
$('#icon_upload').click(function () {
var img=$('#icon_img')[0].files[0]
data={'img':img}
var formdata=new FormData()
formdata.append('img',img)
$.ajax({
headers:{
'Authorization':'JWT '+token
},
method:'POST',
data:formdata,
processData:false,
contentType:false,
dataType: 'json',
url:'http://127.0.0.1:8000/usericon',
success(data){
$('#usericon').attr({'src':'http://127.0.0.1:8888/'+data})
$('#hide_box').css('display','none')
},
error(data) {
alert('failure')
}
})
})
})
},
error(data){
alert('failure')
console.log(data)
console.log(data['status'])
if(data['status']==401) {
location.href = '/templates/login.html?next=userinfo.html'
}
},
})
})
html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<script src="./js/jquery-1.12.4.min.js"></script>
<script src="./js/userinfo.js"></script>
<link rel="stylesheet" href="./css/userinfo.css">
<title>Title</title>
</head>
<body>
<div class="user">
<div style="display: none;position: absolute;left: 50%;top: 50%;transform: translate(-50%,-50%);background: wheat;" id="hide_box"><input type="file" id="icon_img"><input type="button" id="icon_upload" value="upload"></div>
<div class="user_icon"><img id="usericon"></div>
<div id="cusername"></div>
</div>
<div><input type="button" id="active_button" value="邮箱激活"></div>
</body>
</html>
测试
版权声明:本文为lvbu89757原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。