9Django-完成个人信息展示页和上传图片文件更新用户信息的接口编写

一完成个人信息展示页:

1前端地址规划:

个人信息展示页url:

h t t p : / / 1 2 7 . 0 . 0 . 1 : 5 0 0 0 /< u s e r n a m e > / i n f o

2后端配置路由:

#主路由
path('v1/users/', include('user.urls')),
子路由
path('<str:username>',views.UserViews.as_view())

 3后端视图:

class UserViews(View):
    #获取个人信息
    def get(self,request,username=None):
        if username:
            #/v1/users/zhangsan
            try:
                user = UserProfile.objects.get(username=username)
            except Exception as e:
                result = {'code':208, 'error':'用户名不存在'}
                return JsonResponse(result)
            result = {'code':200,'username':username, 'data':{'info':user.info,'sign':user.sign,'nickname':user.nickname,'avatar':str(user.avatar)}}
            return JsonResponse(result)

4浏览器测试:

http://127.0.0.1:5000/linux1/info

二完成图片上传功能:

1个人信息修改页url:

h t t p : / / 1 2 7 . 0 . 0 . 1 : 5 0 0 0 /< u s e r n a m e > / change_info

2视图:

#修改头像
def users_views(request,username):
    if request.method != 'POST':
        result = {'code':201,'error':'请求方式并非post'}
        return JsonResponse(result)
    try:
        user = UserProfile.objects.get(username=username)
    except Exception as e:
        result = {'code':208, 'error':'用户名不存在'}
        return JsonResponse(result)
    avatar = request.FILES['avatar']
    user.avatar = avatar
    user.save()
    return JsonResponse({'code':200})

3路由:

path('<str:username>/avatar',views.users_views)

4浏览器测试:

http://127.0.0.1:5000/linux1/change_info

 三完成更新用户信息功能:

class UserViews(View):
    #获取个人信息
    def get(self,request,username=None):
        if username:
            #/v1/users/zhangsan
            try:
                user = UserProfile.objects.get(username=username)
            except Exception as e:
                result = {'code':208, 'error':'用户名不存在'}
                return JsonResponse(result)
            result = {'code':200,'username':username, 'data':{'info':user.info,'sign':user.sign,'nickname':user.nickname,'avatar':str(user.avatar)}}
            return JsonResponse(result)
    #用户注册
    def post(self,request):
        json_str = request.body #获取前端的json提交
        json_obj = json.loads(json_str) #把json串转换成python的对象
        username = json_obj.get('username')
        email = json_obj.get('email')
        password1 = json_obj.get('password1')
        password2 = json_obj.get('password2')
        phone = json_obj.get('phone')
        #参数的基本检查
        if password1 != password2:
            result = {'code':206,'error':'两次提交密码不一致'}
            #把json对象转换成json串返给浏览器
            return JsonResponse(result)
        #1检查用户名是否可用
        queryset_users = UserProfile.objects.filter(username=username)
        if queryset_users:
            result = {'code':207,'error':'用户名已存在'}
            return JsonResponse(result)
        #手机号不能重复
        queryset_phone = UserProfile.objects.filter(phone=phone)
        if queryset_phone:
            result = {'code':210,'error':'手机号已存在'}
            return JsonResponse(result)
        #给明文密码加密
        hash_object = hashlib.md5()
        hash_object.update(password1.encode()) #md5要求字节串而password1是字符串,必须转换
        pwd = hash_object.hexdigest()
        #已经设置默认值的字段,在创建订单时可以不写
        UserProfile.objects.create(username=username,nickname=username,password=pwd,email=email,phone=phone)
        result = {'code':200,'username':username,'data':{}}
        return JsonResponse(result)
    #更新用户信息[昵称,签名,个人描述]
    def put(self,request,username=None):
        #获取所有数据
        json_str = request.body
        #把json串转换成字典
        json_obj = json.loads(json_str)
        #取用户(一查)
        try:
            user = UserProfile.objects.get(username=username)
        except Exception as e:
            result = {'code':208,'error':'用户名不存在'}
            return JsonResponse(result)
        #修改数据(二改)
        user.sign = json_obj['sign']
        user.info = json_obj['info']
        user.nickname = json_obj['nickname']
        #保存数据(三更新)
        user.save()
        return JsonResponse({'code':200})

 

posted @ 2021-12-12 22:42  linuxTang  阅读(131)  评论(0)    收藏  举报