Esempio n. 1
0
    def put(self, request):
        '''
        实现添加邮箱逻辑
        :param request:
        :return:
        '''
        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 HttpResponseForbidden('参数email有误')

        # 给 email 赋值
        try:
            request.user.email = email
            request.user.save()
        except Exception as e:
            logger.error(e)
            return JsonResponse({'code': RETCODE.EMAILERR, 'errmsg': '添加邮箱失败'})
        # 4.异步发送邮件

        verify_url = generate_verify_email_url(request.user)
        from celery_tasks.email.tasks import send_verify_email
        send_verify_email.delay(email, verify_url)
        return JsonResponse({'code': RETCODE.OK, 'errmsg': '添加邮箱成功'})
Esempio n. 2
0
    def put(self,request):
        '''实现邮箱添加逻辑'''

        # 接收参数
        json_str = request.body.decode()
        json_dict = json.loads(json_str)
        email = json_dict['email']
        print("邮箱是:",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': '添加邮箱失败'})


        # 拼接url
        from apps.users.utils import generate_verify_email_url
        verify_url = generate_verify_email_url(request.user)

        # 4.异步发送邮件
        from celery_tasks.email.tasks import send_verify_email
        send_verify_email.delay(email, verify_url)


        # 5.响应添加邮箱结果
        return http.JsonResponse({'code': RETCODE.OK, 'errmsg': '添加邮箱成功'})
Esempio n. 3
0
    def put(self, request):
        # 1接受body数据
        body_datas = request.body
        # 1.1把接受的bytes===>json数据
        json_datas = body_datas.decode()
        # 1.2把json转化为dict
        dict_datas = json.loads(json_datas)
        # 1.3获取数据
        email = dict_datas.get('email')

        # 2.验证数据
        # 2.1邮箱地址是否存在,符合规则
        if not email:
            return http.HttpResponseBadRequest('缺少email参数')
        if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$',
                        email):
            return http.HttpResponseBadRequest('参数email有误')

        # 3.更新数据(email数据)
        #成功则保存
        #不成功则更新失败
        try:
            request.user.email = email
            request.user.save()
        except Exception as e:
            logger.error(e)
            # raise self.retry(exc=e, max_retries=3)
            return http.JsonResponse({'code': RETCODE.DBERR, 'errmsg': '更新失败'})

        # 4.发送激活邮件
        # 4.1准备发送邮箱数据(主题,消息,发件人,收件人(列表),内容)
        # subject = '美多商城激活邮件'
        # message = ''
        # from_email = '美多商城<*****@*****.**>'
        # recipient_list = [email]
        # html_message = "<a href='#'>有思路,不纠结</a>"
        #
        # # 4.2发送数据
        # send_mail(
        #     subject=subject,
        #     message=message,
        #     from_email=from_email,
        #     recipient_list=recipient_list,
        #     html_message=html_message
        # )

        # 4.2改为celery发送数据
        # 异步发送验证邮件
        # 4+验证邮箱的后端实现(加密)
        # verify_url = '邮件验证链接'
        verify_url = generate_verify_email_url(request.user)
        #4.异步发送邮件验证
        from celery_tasks.email.tasks import send_verify_email
        send_verify_email.delay(email, verify_url)
        # 5.返回响应
        return http.JsonResponse({'code': RETCODE.OK, 'errmsg': 'OK'})
Esempio n. 4
0
    def put(self, request):
        # 1.接收参数 email json
        email = json.loads(request.body.decode()).get('email')

        # 2.修改 用户 的 emailshuxi属性
        request.user.email = email
        request.user.save()

        # 保存邮箱成功之后  发送邮件--网易发送---耗时任务--celery
        # 获取激活链接
        verify_url = generate_verify_email_url(request.user)
        from celery_tasks.email.tasks import send_verify_email
        send_verify_email.delay(email, verify_url)

        # 3.返回结果
        return http.JsonResponse({'code': RETCODE.OK, 'errmsg': '添加邮箱成功'})
 def put(self, request):
     # 1. 接收参数
     json_dict = json.loads(request.body.decode())
     email = json_dict.get('email')
     # 2. 校验
     if not email:
         return http.JsonResponse({'code': 400, 'errmsg': '缺少email参数'})
     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': '参数email格式有误'})
     # 3.添加email
     try:
         request.user.email = email
         request.user.save()
     except Exception as e:
         logger.error(e)
         return http.JsonResponse({'code': 400, 'errmsg': '添加失败'})
     # 4. * 最核心代码:服务端生成URL链接地址给网易stmp邮件中转站
     email_verify_url = generate_verify_email_url(request.user)
     send_verify_email_url.delay(email, email_verify_url)
     return http.JsonResponse({'code': 0, 'errmsg': 'ok'})
Esempio n. 6
0
    def put(self, request):
        # 1.接收参数
        email = json.loads(request.body.decode()).get('email')

        # 2.正则校验

        # 3.修改 User.objects.filter().update(email=email)
        # request.user
        request.user.email = email
        request.user.save()

        # 发邮件的功能
        # 生成 激活链接
        from apps.users.utils import generate_verify_email_url
        verify_url = generate_verify_email_url(request.user)

        from celery_tasks.email.tasks import send_verify_email
        send_verify_email.delay(email, verify_url)

        # 4.返回响应对象
        return http.JsonResponse({'code': RETCODE.OK, 'errmsg': '添加邮箱成功'})
Esempio n. 7
0
 def put(self, request):
     """实现添加邮箱逻辑"""
     # 接收axios
     body = request.body
     body_str = body.decode()
     data = json.loads(body_str)
     # 检验参数
     email = data.get('email')
     if not email:
         return http.HttpResponseBadRequest('缺少email参数')
     if not re.match(r"^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$",
                     email):
         return http.HttpResponseBadRequest('email参数有误')
     # 更新数据
     try:
         request.user.email = email
         request.user.save()
     except Exception as e:
         logger.error(e)
         return http.JsonResponse({'code': 0, 'errmsg': '添加邮箱失败'})
     # 给邮箱发送链接
     # from django.core.mail import send_mail
     # # subject, message, from_email, recipient_list
     # subject = "美多商城激活邮件"
     # message = ""
     # from_email = "欢乐玩家<*****@*****.**>"
     # # 收件人列表
     # recipient_list = ["*****@*****.**"]
     # html_message = "<a href='http://www.huyouni.com'>戳我有惊喜</a>"
     # send_mail(subject=subject,
     #           message=message,
     #           from_email=from_email,
     #           recipient_list=recipient_list,
     #           html_message=html_message)
     # 异步发送验证邮件
     from celery_tasks.email.tasks import send_verify_email
     verify_url = generate_verify_email_url(request.user)
     send_verify_email.delay(email, verify_url)
     # 响应添加邮箱结果
     return http.JsonResponse({"code": 0, "errmsg": "添加邮箱成功"})
Esempio n. 8
0
    def put(self, request):
        """
        1.接收参数
        2.获取参数
        3.验证参数
        4.更新数据
        5.返回相应
        """
        # 1.接收参数
        data = request.body
        body_str = data.decode()
        params = json.loads(body_str)
        # 2.获取参数
        email = params.get('email')
        # 3.验证参数
        if not email:
            return http.HttpResponseBadRequest('参数不能省略')
        if not re.match(r'^[a-z0-9][\w\.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$',
                        email):
            return http.HttpResponseBadRequest('参数不符合规则')
        # 4.更新数据
        try:
            request.user.email = email
            request.user.save()
        except Exception as e:
            logger.error(e)
            return http.JsonResponse({
                'code': RETCODE.DBERR,
                'errmsg': '添加邮箱失败'
            })

        #发送邮件
        from celery_tasks.email.tasks import send_verify_email
        verify_email = generate_verify_email_url(request.user)
        send_verify_email.delay(email, verify_email)

        # 5.返回相应
        return http.JsonResponse({'code': RETCODE.OK, 'errmsg': 'ok'})
    def put(self, request):

        # 1.接收参数 email
        email = json.loads(request.body.decode()).get('email')

        # 2.校验邮箱 正则

        # 3. 存到该用户的email属性
        try:
            request.user.email = email
            request.user.save()

        except Exception as e:
            return JsonResponse({'code': RETCODE.EMAILERR, 'errmsg': '添加邮箱失败'})

        # 发邮件 耗时操作
        from apps.users.utils import generate_verify_email_url
        verify_url = generate_verify_email_url(request.user)
        from celery_tasks.email.tasks import send_verify_email
        send_verify_email.delay(email, verify_url)

        # 4. 返回前端的数据响应
        return JsonResponse({'code': RETCODE.OK, 'errmsg': '添加邮箱成功'})
Esempio n. 10
0
    def put(self, request):
        """实现添加邮箱逻辑"""
        # 接收参数
        json_dict = json.loads(request.body.decode())
        email = json_dict.get('email')

        # 校验参数
        if not email:
            return http.JsonResponse({'code': 400, 'errmsg': '缺少email参数'})
        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': '参数email有误'})

        # django发送邮件服务器设置
        # 发送激活邮件
        # from django.core.mail import send_mail
        # subject = '主题'
        # message = ''
        # from_email = '美多商城<*****@*****.**>'
        # recipient_list = [email]
        # html_message = '<a href="#">点击激活</a>'
        # send_mail(
        #     subject,
        #     message,
        #     from_email,
        #     recipient_list,
        #     html_message,
        #  )
        from celery_tasks.email.tasks import send_verify_email
        verify_url = generate_verify_email_url(request.user)
        send_verify_email.delay(email, verify_url)
        # 赋值email字段
        user = request.user
        user.email = email
        user.save()
        # 响应添加邮箱结果
        return http.JsonResponse({'code': 0, 'errmsg': '添加邮箱成功'})