当前位置: 首页 > news >正文

第12次12: 修改和删除收货地址

第1步:在users应用下views.py中新增实现修改收货地址的视图类

class UpdateDestroyAddressView(LoginRequiredJSONMixin, View):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 HttpResponseForbidden('缺少必传参数')if not re.match(r'^1[3-9]\d{9}$', mobile):return HttpResponseForbidden('参数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 HttpResponseForbidden('参数tel有误')if email:if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email):return HttpResponseForbidden('参数email有误')# 判断地址是否存在,并更新地址信息try:Address.objects.filter(id=address_id).update(user=request.user, title=receiver, receiver=receiver,province_id=province_id, city_id=city_id, place=place,district_id=district_id, 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 delete(self, request, address_id):# 获取默认收货地址的iddefault_address_id = request.user.default_address# 判断用户删除的是否是默认收货地址,如果是,那么将默认收货地址字段设置为None,# 如果不是,那么直接删除try:address = Address.objects.get(id=address_id)if default_address_id == address.id:request.user.default_address_id = Nonerequest.user.save()address.is_deleted = Trueaddress.save()except Exception as e:logger.error(e)return JsonResponse({'code': RETCODE.DBERR,'errmsg': '删除地址失败'})# 返回响应结果return JsonResponse({'code': RETCODE.OK, 'errmsg': '删除地址成功'})

第2步:在users应用下配置路由

path('addresses/<int:address_id>/', views.UpdateDestroyAddressView.as_view()),

相关文章:

  • 前端面试宝典---前端水印
  • DeepSeek模型安全部署与对抗防御全攻略
  • C语言:内存函数
  • C++ 内存泄漏检测器设计
  • 第17讲、odoo18可视化操作代码生成模块
  • 鸿蒙进阶——Mindspore Lite AI框架源码解读之模型加载详解(二)
  • Linux之进程间通信
  • 用“照片放大/缩小”来通俗理解多尺度
  • Altium Disigner(16.1)学习-元器件封装
  • 【看到哪里写到哪里】C的指针-3(函数指针)
  • 【Java Web】6.登入认证
  • Missashe考研日记—Day51-Day57
  • 网络安全的学习路线是怎么样的?
  • 已有的前端项目打包到tauri运行(windows)
  • 大模型前处理-CPU
  • (九)学生写作画像可视化
  • 【Unity】相机 Cameras
  • rabbitmq Direct交换机简介
  • React Hooks 与异步数据管理
  • Python-matplotlib中的Pyplot API和面向对象 API
  • 苏州怎么做网站/浙江seo公司
  • 做网站推广业务怎么样/推广获客
  • 怎么学习网站开发/微信营销成功案例8个
  • 网站制作素材全套/提高工作效率的方法有哪些
  • 30_10_郑州网站制作/爱上链外链购买交易
  • 自己想做个网站怎么做/怎么做网站教程