Django 中注册账号时的邮箱验证的程序

1.首先,写一个注册账号的程序

class RegisterView(View):
    def post(self,request):
        user_name = request.POST.get('username')
        password = request.POST.get('password')
        cpassword = request.POST.get('cpassword')
        email = request.POST.get('email')
        '''判断数据是否为空'''
        if not all([user_name, password, cpassword, email]):
            return render(request, 'index.html')

        if not re.match(r'^([a-zA-Z0-9_-])+@([a-zA-Z0-9_-])+((\.[a-zA-Z0-9_-]{2,3}){1,2})$', email):
            return render(request, 'index.html', {'errmsg': '邮箱不符合规范'})

        

        '''判断重复的操作'''
        '''判断邮箱'''
        try:
            user = UserInfo.objects.filter(email__exact=email)

        except Exception as e:
            user = None

        if user:
            return render(request, 'index.html', {'errmsg': '邮箱已经被使用'})

        '''判断用户名'''
        try:
            usern = UserInfo.objects.get(username=user_name)

        except Exception as e:
            usern = None

        if usern:
            return render(request, 'index.html', {'errmsg': '用户名已经被使用'})

        '''创建一个用户对象'''
        user = UserInfo.objects.create_user(username=user_name, password=password, email=email)
  

      '''将激活标志设置为0'''
        user.is_active = 0
        user.save()

2.接着,在上一个程序中继续写一个邮箱验证程序:

        t = tr(settings.SECRET_KEY,3600)
        user_id_dict = {'user_id':user.id}
        active_id = t.dumps(user_id_dict)
        active_id = active_id.decode()
        print(active_id)

      
        send_email_celery(to_email=email, active_id=active_id)
        subject = '项目名'
        message = '<div><a href="http://127.0.0.1:8000/user/register">这是激活邮件</a></div>'
        from_email = '发送邮箱的地址'
        recipient_list = [email]
        html_message = '<div><a href="http://127.0.0.1:8000/user/active/%s">这是激活邮件</a></div>'%active_id
        send_mail(subject=subject,message=message,from_email=from_email,recipient_list=recipient_list,html_message=html_message)
	return HttpResponse('激活邮件')

3.写一个判断邮箱是否激活成功的程序

class ActiveHandler(View):
    def get(self,request,obj):
      
        t = tr(settings.SECRET_KEY, 3600)
        print(obj)
        try:
            user_id = t.loads(obj)
            userid = user_id['user_id']
            user = UserInfo.objects.get(id = userid)
            user.is_active = 1
            user.save()
            return HttpResponse('激活成功')
        except Exception as e:
            return HttpResponse('激活失败')

4.这里你要点开邮箱收到的邮件,页面显示激活成功则成功

5.去admin站点查看,是否激活成功

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值