Django项目之电商购物商城 – 添加邮箱
一. 用户中心
添加邮箱功能在用户中心中 , 先完善用户中心功能
1. 视图
# 用户中心 class UserInfoCenterView(LoginRequiredMixin,View): def get(self , request): context = { 'username' : request.user.username, 'mobile' : request.user.mobile, 'email' : request.user.email, } return render(request , 'user_center_info.html' ,context)
2. 路由
# 用户中心 path('user_info_center/' , views.UserInfoCenterView.as_view() , name = "user_center"),
二. 添加邮箱
保存邮箱是通过发送put请求 , url为email
1.创建新的视图用于获取email , 以及保存
改写LoginRequiredMixin – 其返回对象为HttpResponse类型 , 无法返回JsonResponse
from django.contrib.auth.mixins import LoginRequiredMixin from django.http import JsonResponse from utils.response_code import RETCODE class LoginRequiredMixinJosn(LoginRequiredMixin): def handle_no_permission(self): return JsonResponse({ 'code':RETCODE.SESSIONERR, 'errmsg':"用户未登录" })
创建email视图
class EmailView(LoginRequiredMixinJosn,View): def put(self , request): #put请求的信息保存在body中 email_json = json.loads(request.body.decode()) email = email_json.get('email') print(email) # 校验数据 if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$',email): return HttpResponseForbidden("邮箱参数有误") # 保存邮箱 request.user.email = email_json request.user.save() return HttpResponse({ 'code':RETCODE.OK, 'errmsg' :'OK' })
创建路由
# 邮箱保存 path('email/' , views.EmailView.as_view() ),