Django下用户详情页展示
主要分四个模块:
第一,详情页html文件,加载对应的js文件
第二,url模块
第三,serializer模块(创建序列化器)
第四,view模块(实现对应的功能)
1、html模块
//这是一个入口函数
$(function(){
token=localStorage.token
//这个ajax是为了将初始的登录用户信息展示出来,这个页面是通过登录界面跳转过来的,通过请求头的token向后端请求数据,当用户的用户名和密码正确的时候,跳转到当前页面,并且展示该用户的详细信息
$.ajax({
url:'http://127.0.0.1:8000/users/userinfo/',
method:'GET',
headers:{'Authorization':'JWT '+token},
success:function (data) {
username = data['username'];
phone= data['phone'];
email=data['email'];
user_id=data['id'];
is_active = data['is_active']
$('#myusername').val(username);
$('#myrealname').val(username);
$('#myusername2').text(username);
$('#email').val(email);
$('#phone').val(phone);
if(is_active){
$('#active_flag').val('是');
}else {
$('#active_flag').val('否');
}
},
error:function () {
alert('失败')
}
})
//todo 修改用户的信息
//这个单击函数是确认修改的按钮,当用户有信息需要修改的时候,通过此按钮确认修改的信息。
$('#sub_btn').click(function () {
// alert('ok')
//将修改的值获取出来
username = $('#myusername').val();
email= $('#email').val();
phone = $('#phone').val();
data = {
'username':username,
'email':email,
'phone':phone
}
data_json = JSON.stringify(data)
$.ajax({
url:'http://127.0.0.1:8000/users/userinfo/',
headers:{
'Authorization':'JWT ' + token
},
//部分修改,也可以用patch请求
type:'PUT',
data:{
//_method是put请求的固定用法
_method:'PUT',
'username':username,
'email':email,
'phone':phone
},
dataType:'json',
success:function () {
alert('ok')
}
})
})
})
2.url模块(个人记录,没什么好说的)
跳转
url(r'^userinfo/$',views.UserInfoView.as_view())
3.Serializer模块
#这里的id和is_active字段是只读字段,前端传过来没关系,后端不会返回这些字段
class UserInfoSerializer(serializers.ModelSerializer):
'''
这个序列化器用来返回我们单个对象的
'''
class Meta:
model = models.User
fields = ['id','username','phone','email','is_active']
read_only=['id','is_active']
4.View模块
class UserInfoView(RetrieveUpdateAPIView):
#指定使用的序列化器
serializer_class = serializers.UserInfoSerializer
#指定访问的权限
permission_classes = [IsAuthenticated]
def get_object(self):
#重写方法,当登录成功之后,框架会自动帮你将登陆成功的用户的信息赋值给request中的user
return self.request.user
注:
通过请求方式的不同进入不同的方法,put请求进入修改方法,get请求进入访问方法