9Django-完成个人信息展示页和上传图片文件更新用户信息的接口编写
一完成个人信息展示页:
1前端地址规划:
个人信息展示页url:
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})

浙公网安备 33010602011771号