def put(self, request): # 更新、修改 json_str = request.body.decode() json_dict = json.loads(json_str) email = json_dict.get('email') if email is None: return http.HttpResponseForbidden('缺少必传参数') if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email): return http.HttpResponseForbidden('参数有误') # 保存到数据库 try: # User.object.create(email=email) request.user.email = email request.user.save() except Exception as e: logger.error(e) return http.JsonResponse({ 'code': RETCODE.DBERR, 'errmsg': '邮箱格保存失败' }) # 异步发送邮件 verify_url = generate_verify_email_url( request.user) # request.user 当前登录用户 send_verify_email.delay(email, verify_url) # email 收件人邮箱 return http.JsonResponse({'code': RETCODE.OK, 'errmsg': '邮箱格保存成功'})
def put(self, request): # 接收參數 json_str = request.body.decode() json_dict = json.loads(json_str) email = json_dict.get('email') # 校驗參數 if not email: return http.HttpResponseForbidden('缺少email參數') if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email): return http.HttpResponseForbidden('參數email有誤') # 將用戶傳入的email保存到用戶表的email欄位 try: request.user.email = email request.user.save() except Exception as e: logger.error(e) return http.JsonResponse({'code': RETCODE.DBERR, 'errmsg': '新增郵箱失敗'}) # 發送驗證郵件 verify_url = generate_verify_email_url(request.user) send_verify_email.delay(email, verify_url) # 響應結果 return http.JsonResponse({'code': RETCODE.OK, 'errmsg': 'OK'})
def put(self, request): # 1、提取参数 data = json.loads(request.body.decode()) email = data.get('email') # 2、校验参数 if not email: return JsonResponse({'code': 400, 'errmsg': '缺少参数'}) if not re.match(r'^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$', email): return JsonResponse({'code': 400, 'errmsg': '邮箱格式有误'}) # 3、业务处理 —— (1)、保存更新邮箱。(2)、发送验证邮件(业务性校验) try: user = request.user # 必须是User对象 —— 必须登陆 user.email = email user.save() except Exception as e: logger.error('数据库更新邮箱失败,错误信息: %s' % e) return JsonResponse({'code': 400, 'errmsg': '数据库更新邮箱失败'}) # TODO:发送验证邮件 verify_url = generate_verify_email_url(request) send_verify_email.delay(email, verify_url) # 4、构建响应 return JsonResponse({'code': 0, 'errmsg': 'ok'})
def put(self, request): """实现添加邮箱逻辑""" # 接收参数 json_str = request.body.decode() json_dict = json.loads(json_str) email = json_dict.get('email') # 校验参数 if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email): return http.HttpResponseForbidden('参数email有误') # 赋值email字段 try: request.user.email = email request.user.save() except Exception as e: logger.error(e) return http.JsonResponse({'code': RETCODE.EMAILERR, 'errmsg': '添加邮箱失败'}) # 异步发送验证邮件 verify_url = generate_verify_email_url(request.user) send_verify_email.delay(email, verify_url) # 响应添加邮箱结果 return http.JsonResponse({'code': RETCODE.OK, 'errmsg': '添加邮箱成功'})
def put(self, request): # 接收参数 email_client = json.loads(request.body.decode()) email = email_client.get('email') # 校验参数 if not email: return http.HttpResponseForbidden('缺少email参数') if not re.match(r'[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}', email): return http.HttpResponseForbidden("参数不正确") # 赋值email字段 try: request.user.email = email request.user.save() except Exception as e: # 添加日志 return http.JsonResponse({'code':RETCODE.DBERR, 'errmsg': '添加失败'}) # 生成邮箱验证码 verify_url = generate_verify_email_url(request.user) # celery异步发送邮箱验证 send_verify_email.delay(email, verify_url) return http.JsonResponse({'code':RETCODE.OK, 'errmsg': '添加邮箱成功'})
def put(self, request): # 接收参数 json_str = request.body.decode() # body 类型是bytes json_dict = json.loads(json_str) email = json_dict.get('email') # 校验参数 if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email): return http.HttpResponseForbidden('参数email有误') # 将用户传入的邮箱保存到用户数据库的email字段中 try: request.user.email = email request.user.save() except Exception as e: logger.error(e) return http.JsonResponse({ 'code': RETCODE.DBERR, 'errmsg': '添加邮箱失败' }) # 发送邮箱验证邮件 verify_url = generate_verify_email_url(request.user) # send_verify_email(email, verify_url) # 错误的写法 send_verify_email.delay(email, verify_url) # 一定要记得调用delay # 响应结果 return http.JsonResponse({'code': RETCODE.OK, 'errmsg': 'OK'})
def put(self, request): #提取參數 json_dict = json.loads(request.body) email = json_dict.get('email') #校驗參數 if not re.match('^[\w.-]+@[\w-]+(.[\w_-]+)+$', email): return HttpResponseForbidden('請確認Email格式是否正確') #實現主體業務邏輯:保存Email try: request.user.email = email request.user.save() except Exception as e: logger.error(e) return JsonResponse({'code': RETCODE.DBERR, 'errmsg': '新增Email失敗'}) #為將保存Email和驗證Email作解耦,採用celery發送驗證Email user = request.user verify_url = generate_verify_email_url(user) send_verify_mail.delay(email, verify_url) #返回響應 return JsonResponse({'code': RETCODE.OK, 'errmsg': 'OK'})
def update(self, instance, validated_data): """更新记录 -- 重写 :param instance: :param validated_data: :return: """ # 获取邮箱 email = validated_data.get('email') # 赋值 instance.email = email # 保存信息 instance.save() # 获取激活邮箱url verify_url = generate_verify_email_url(instance.id) # 发送邮箱 -- celery send_verify_email.delay(email, verify_url) return instance
def put(self, request): # 将用户传入的邮箱保存到数据库的email字段中 # 接收参数 json_str = request.body.decode() # body类型是bytes json_dict = json.loads(json_str) # 将json格式数据转换为字典(可以这么理解,json.loads()函数是将字符串转化为字典) email = json_dict.get('email') # 校验参数 if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email): return http.HttpResponseForbidden('参数email有误') try: request.user.email = email request.user.save() except Exception as e: logger.error(e) return http.JsonResponse({'code': '1', 'errmsg': '添加邮箱失败'}) # 发送邮箱验证邮件 verify_url = generate_verify_email_url(request.user) # send_verify_email(email, verify_url) 错误的写法 send_verify_email.delay(email, verify_url) # 响应结果 return http.JsonResponse({'code': '0', 'errmsg': 'ok'})
def put(self, request): email = request.body.decode() email = json.loads(email) email = email.get('email') if not email: return http.JsonResponse({'code': 400, 'errmsg': '沒有傳入郵箱'}) if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email): return http.JsonResponse({'code': 400, 'errmsg': '郵箱不符合規範'}) try: request.user.email = email request.user.save() except Exception as e: return http.JsonResponse({'code': '400', 'errmsg': '添加郵箱失敗'}) verify_url = generate_verify_email_url(request) send_verify_email.delay(email, verify_url=verify_url) return http.JsonResponse({'code': 0, 'errmsg': 'OK'})
def put(self, request): """实现添加邮箱逻辑""" # 判断用户是否登录并返回JSON json_dict = json.loads(request.body.decode()) email = json_dict.get('email') if not email: return http.HttpResponseForbidden('缺少必传参数') if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email): return http.HttpResponseForbidden('参数email有误') try: request.user.email = email request.user.save() except Exception as e: logging.error(e) return http.JsonResponse({'code': RETCODE.DBERR, 'errmsg': '添加邮箱失败'}) verify_url = generate_verify_email_url(request.user) # send_verify_email.delay(email, verify_url) send_verify_email(email, verify_url) return http.JsonResponse({'code': RETCODE.OK, 'errmg': '添加邮箱成功'})
def put(self, request): json_str = request.body.decode() json_dict = json.loads(json_str) email = json_dict.get('email') if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email): return http.HttpResponseForbidden('参数email有误') # 给当前登陆用户绑定email字段 try: request.user.email = email request.user.save() except Exception as e: logger.error(e) return http.JsonResponse({ 'code': RETCODE.DBERR, 'errmsg': '添加邮箱失败' }) # 发送邮箱验证邮件 verify_url = generate_verify_email_url(request.user) print(email, verify_url) send_verify_email.delay(email, verify_url) return http.JsonResponse({'code': RETCODE.OK, 'errmsg': 'OK'})
def put(self, request): user = request.user if user.email == '': # 接收数据 json_str = request.body.decode() data = json.loads(json_str) email = data.get('email') # 校验数据 if email is None: return HttpResponseForbidden('缺少必要参数') if not re.match( '^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email): return HttpResponseForbidden('邮箱不正确') # 修改数据 user.email = email user.save() # 发送邮件 # send_mail(subject='主题', message='基本内容', from_email='发件人', recipient_list='收件人列表', # html_message='邮件超文本内容') # subject = '美多商城邮箱验证' # send_mail(subject=subject, message='', from_email=settings.EMAIL_FROM, recipient_list=[user.email], # html_message='邮件超文本内容') # 对查询参数进行加密 verify_url = generate_verify_email_url(user) # 使用celery发送邮件 send_verify_email.delay(user.email, verify_url) # 响应 return JsonResponse({'code': RETCODE.OK, 'errmsg': 'OK'})
def put(self, request): json_str = json.loads(request.body.decode('utf-8')) email = json_str.get("email") # if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.a-z]{2,5}){1.2}$', email): # logging.error("X:email:eroor") if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email): return http.HttpResponseForbidden('参数email有误') try: request.user.email = email request.user.save() except Exception as e: logging.error(e) return http.JsonResponse({"code": 1, "errmsg": 'db:save_ERROR'}) user = request.user # data = {"user": user.username, 'email': user.email} # s = SECRET_key(SECRET_TXT()) # data = s.dumpsl(data) # verify_url="http://www.meiduo.site:8000/email/verification/?token=" + str(data) # 邮件的激活网址 verify_url = generate_verify_email_url(request.user) send_verify_email.delay(email, verify_url) return http.JsonResponse({"code": 0, "errmsg": 'safe'})