def post(self, request): """实现修改密码逻辑""" # 1.接收参数 old_password = request.POST.get('old_password') new_password = request.POST.get('new_password') new_password2 = request.POST.get('new_password2') # 2.验证参数 if not all([old_password, new_password, new_password2]): return HttpResponseForbidden('缺少必传参数') if not re.match(r'^[0-9A-Za-z]{8,20}$', new_password): return HttpResponseBadRequest('密码最少8位,最长20位') if new_password != new_password2: return HttpResponseBadRequest('两次输入的密码不一致') # 3.检验旧密码是否正确 if not request.user.check_password(old_password): return render(request, 'user_center_pass.html', {'origin_password_errmsg': '原始密码错误'}) # 4.更新新密码 try: request.user.set_password(new_password) request.user.save() except Exception as e: logger.error(e) return render(request, 'user_center_pass.html', {'change_password_errmsg': '修改密码失败'}) # 5.退出登陆,删除登陆信息 logout(request) # 6.跳转到登陆页面 response = redirect(reverse('users:login')) response.delete_cookie('username') return response
def post(self, request): old_password = request.POST.get('old_password') new_password = request.POST.get('new_password') new_password2 = request.POST.get('new_password2') if not all([old_password, new_password, new_password2]): return HttpResponseForbidden('缺少必传参数') if not re.match(r'^[0-9A-Za-z]{8,20}$', new_password): return HttpResponseBadRequest('密码最少8位,最长20位') if new_password != new_password2: return HttpResponseBadRequest('两次输入的密码不一致') if not request.user.check_password(old_password): return render(request, 'user_center_pass.html', {'origin_password_errmsg': '原始密码错误'}) try: request.user.set_password(new_password) request.user.save() except Exception as e: import logging logger = logging.getLogger('django') logger.error(e) return render(request, 'user_center_pass.html', {'change_password_errmsg': '修改密码失败'}) logout(request) response = redirect(reverse('users:login')) response.delete_cookie('username') return response
def put(self, request, address_id): """设置默认地址""" try: # 接收参数,查询地址 address = Address.objects.get(id=address_id) # 设置地址为默认地址 request.user.default_address = address request.user.save() except Exception as e: logger.error(e) return JsonResponse({'code': RETCODE.DBERR, 'errmsg': '设置默认地址失败'}) # 响应设置默认地址结果 return JsonResponse({'code': RETCODE.OK, 'errmsg': '设置默认地址成功'})
def delete(self, request, address_id): """删除地址""" try: # 查询要删除的地址 address = Address.objects.get(id=address_id) # 将地址逻辑删除设置为True address.is_deleted = True address.save() except Exception as e: logger.error(e) return JsonResponse({'code': RETCODE.DBERR, 'errmsg': '删除地址失败'}) # 响应删除地址结果 return JsonResponse({'code': RETCODE.OK, 'errmsg': '删除地址成功'})
def delete(self, request, address_id): try: address = Address.objects.get(id=address_id) except Address.DoesNotExist: return JsonResponse({'code': RETCODE.NODATAERR, 'errmsg': '暂无此数据'}) try: address.is_deleted = True address.save() except Exception as e: logger.error(e) return JsonResponse({'code': RETCODE.DBERR, 'errmsg': '删除失败'}) return JsonResponse({'code': RETCODE.OK, 'errmsg': 'ok'})
def put(self, request, address_id): """设置地址标题""" # 接收参数:地址标题 json_dict = json.loads(request.body.decode()) title = json_dict.get('title') try: # 查询地址 address = Address.objects.get(id=address_id) # 设置新的地址标题 address.title = title address.save() except Exception as e: logger.error(e) return JsonResponse({'code': RETCODE.DBERR, 'errmsg': '设置地址标题失败'}) # 4.响应删除地址结果 return JsonResponse({'code': RETCODE.OK, 'errmsg': '设置地址标题成功'})
def put(self, request, address_id): """修改地址""" # 接收参数 json_dict = json.loads(request.body.decode()) receiver = json_dict.get('receiver') province_id = json_dict.get('province_id') city_id = json_dict.get('city_id') district_id = json_dict.get('district_id') place = json_dict.get('place') mobile = json_dict.get('mobile') tel = json_dict.get('tel') email = json_dict.get('email') # 校验参数 if not all( [receiver, province_id, city_id, district_id, place, mobile]): return HttpResponseBadRequest('缺少必传参数') if not re.match(r'^1[3-9]\d{9}$', mobile): return HttpResponseBadRequest('参数mobile有误') if tel: if not re.match( r'^(0[0-9]{2,3}-)?([2-9][0-9]{6,7})+(-[0-9]{1,4})?$', tel): return HttpResponseBadRequest('参数tel有误') if email: if not re.match( r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email): return HttpResponseBadRequest('参数email有误') # 判断地址是否存在,并更新地址信息 try: Address.objects.filter(id=address_id).update( user=request.user, title=receiver, receiver=receiver, province_id=province_id, city_id=city_id, district_id=district_id, place=place, mobile=mobile, tel=tel, email=email) except Exception as e: logger.error(e) return JsonResponse({'code': RETCODE.DBERR, 'errmsg': '更新地址失败'}) # 构造响应数据 address = Address.objects.get(id=address_id) address_dict = { "id": address.id, "title": address.title, "receiver": address.receiver, "province": address.province.name, "city": address.city.name, "district": address.district.name, "place": address.place, "mobile": address.mobile, "tel": address.tel, "email": address.email } # 响应更新地址结果 return JsonResponse({ 'code': RETCODE.OK, 'errmsg': '更新地址成功', 'address': address_dict })
def post(self, request): """实现新增地址逻辑""" # 判断是否超过地址上限:最多20个 # Address.objects.filter(user=request.user).count() count = request.user.addresses.count() if count >= 20: return JsonResponse({ 'code': RETCODE.THROTTLINGERR, 'errmsg': '超过地址数量上限' }) # 接收参数 json_dict = json.loads(request.body.decode()) receiver = json_dict.get('receiver') province_id = json_dict.get('province_id') city_id = json_dict.get('city_id') district_id = json_dict.get('district_id') place = json_dict.get('place') mobile = json_dict.get('mobile') tel = json_dict.get('tel') email = json_dict.get('email') # 校验参数 if not all( [receiver, province_id, city_id, district_id, place, mobile]): return HttpResponseBadRequest('缺少必传参数') if not re.match(r'^1[3-9]\d{9}$', mobile): return HttpResponseBadRequest('参数mobile有误') if tel: if not re.match( r'^(0[0-9]{2,3}-)?([2-9][0-9]{6,7})+(-[0-9]{1,4})?$', tel): return HttpResponseBadRequest('参数tel有误') if email: if not re.match( r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email): return HttpResponseBadRequest('参数email有误') # 保存地址信息 try: address = Address.objects.create(user=request.user, title=receiver, receiver=receiver, province_id=province_id, city_id=city_id, district_id=district_id, place=place, mobile=mobile, tel=tel, email=email) # 设置默认地址 if not request.user.default_address: request.user.default_address = address request.user.save() except Exception as e: logger.error(e) return JsonResponse({'code': RETCODE.DBERR, 'errmsg': '新增地址失败'}) # 新增地址成功,将新增的地址响应给前端实现局部刷新 address_dict = { "id": address.id, "title": address.title, "receiver": address.receiver, "province": address.province.name, "city": address.city.name, "district": address.district.name, "place": address.place, "mobile": address.mobile, "tel": address.tel, "email": address.email } # 响应保存结果 return JsonResponse({ 'code': RETCODE.OK, 'errmsg': '新增地址成功', 'address': address_dict })