Пример #1
0
 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': '邮箱格保存成功'})
Пример #2
0
    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'})
Пример #3
0
    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'})
Пример #4
0
    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': '添加邮箱成功'})
Пример #5
0
    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': '添加邮箱成功'})
Пример #6
0
    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'})
Пример #7
0
 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'})
Пример #8
0
    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
Пример #9
0
 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'})
Пример #10
0
    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'})
Пример #11
0
    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': '添加邮箱成功'})
Пример #12
0
    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'})
Пример #13
0
    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'})
Пример #14
0
    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'})