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

第12次06 :用户中心添加邮箱

第一步:定义用于保存邮箱信息的视图,由于需要用户登录之后才能添加邮箱,所以在前后端交互时要先进行用户登录状态的验证(因会过期),数据交互使用json。

在xiaoyumall/utils下创建views.py,并定义限制用户访问类LoginRequiredJSONMixin

from django.contrib.auth.mixins import LoginRequiredMixin
from xiaoyu_mall.utils.response_code import RETCODE
from django.http import JsonResponseclass LoginRequiredJSONMixin(LoginRequiredMixin):"""自定义判断用户是否登录的扩展类:返回JSON"""# 'ensure_ascii': False  错误信息以中文形式显示def handle_no_permission(self):resp_json = {'code': RETCODE.SESSIONERR, 'errmsg': '用户未登录'}print(resp_json)return JsonResponse(resp_json, json_dumps_params={'ensure_ascii': False})

继承这个类即可实现登录状态的验证。

import jsonfrom xiaoyu_mall.utils.views import LoginRequiredJSONMixinlogger = logging.getLogger('django')class EmailView(LoginRequiredJSONMixin, View):"""添加邮箱"""def put(self, request):"""实现添加邮箱逻辑"""# 接收参数 body, 类型是bytes类型json_str = request.body.decode()json_dict = json.loads(json_str)email = json_dict.get('email')# print(email)if not email:  # 校验参数return HttpResponseForbidden('缺少email参数')if not re.match(r'^[a-z0-9][\w\\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email):return HttpResponseForbidden('参数email有误')# 赋值email字段try:request.user.email = emailrequest.user.save()except Exception as e:logger.error(e)return JsonResponse({'code': RETCODE.DBERR, 'errmsg': '添加邮箱失败'})# 响应添加邮箱结果# 响应添加邮箱结果return JsonResponse({'code': RETCODE.OK, 'errmsg': '添加邮箱成功'})

第二步:定义路由

path('emails/', views.EmailView.as_view()),

第三步:调整session时长,验证。

http://www.xdnf.cn/news/9128.html

相关文章:

  • 【01】大模型原理与API使用
  • 【本地面板公网访问】本地面板也能公网访问?CasaOS+1Panel+cpolar保姆级教程
  • GeoServer样式设置:使用本地图标及分层/分视野显示
  • linux中使用make clean重新编译
  • 3dmax直接导入导出gltf/glb格式插件(免费)
  • 链表面试题10之随机链表的复制
  • Windows环境下Redis的安装使用与报错解决
  • DeepSpeed-Ulysses:支持极长序列 Transformer 模型训练的系统优化方法
  • 技术视界 | 打造“有脑有身”的机器人:ABC大脑架构深度解析(上)
  • Redisson使用分布锁的详解
  • LTC之管理线索:企业抢占市场先机的制胜法宝
  • 第7章 C控制语句:分支和跳转
  • AI赋能天气预测:微软 Aurora 模型
  • 工业视觉阈值技术圣经:VisionMaster六维算法解析+脑图攻防手册
  • Selenium 测试框架 - .NET
  • 有铜半孔的设计规范与材料创新
  • 苍穹外卖--Redis
  • JavaScrip 中 reduce 函数用法详解
  • (请关注)Oracle性能调优、优化总结调优参考直接应用,性能提升实用案例
  • 时代变了,我选择ApiFox替代Postman
  • einops.layers.torch.Rearrange作用
  • 计算机网络实验课(一)——配置+实验一:查看当前主机所有的网卡信息
  • 2.1 C++之条件语句
  • 5.26打卡
  • RK3588 buildroot 双网口bonding调试
  • MERIT:用于可靠且可解释的肝纤维化分期的多视图证据学习|文献速递-深度学习医疗AI最新文献
  • 【前端兼容】深入实战:vw/vh 视口单位的高效应用与避坑指南
  • Linux系统使用docker部署SpringBoot+vue项目详细【从零开始,亲测有效】
  • 机试 | vector/array Minimum Glutton C++
  • 微信语音类输入发送功能测试