Django验证——邮箱

在settings.py配置文件中配置数据

EMAIL_HOST = "smtp.126.com"
EMAIL_POSRT = 25
EMAIL_HOST_USER = ""#邮箱名
EMAIL_HOST_PASSWORD = ""#密码
EMAIL_USE_TLS = False
EMAIL_FROM = ""#邮箱名

建立utils文件夹新建send_email.py
生成随机数作为激活链接

from random import Random
def generate_random_str(randomlength=8):
    str = ''
    chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
    length = len(chars)-1
    random = Random()
    for i in range(randomlength):
        str+=chars[random.randint(0,length)]
    return str

发送邮件

from xxx.settings import EMAIL_FROM#导入smtp

from users.models import  EmailVerifyRecord #导入模型

from django.core.mail import send_mail #导入发送邮件
def send_register_email(email,send_type="register"):
    email_record = EmailVerifyRecord()#实例化
    random_str = generate_random_str(16)#取随机数
    email_record.code = random_str
    email_record.email = email
    email_record.send_type = send_type
    email_record.save()
 
    if send_type == "register":
        email_title = "注册激活链接"
        email_body = "请点击下面的链接激活你的账号:http://127.0.0.1:8000/active/{0}".format(random_str)
        send_status = send_mail(email_title,email_body,EMAIL_FROM,[email])
        if send_status:
            pass

app.views.py

from utils.email_send import  send_register_email

from .forms import LoginForm
<code class="language-python">class RegisterView(View):
    def get(self,request):#访问
        return render(request,"register.html")
    def post(self,request):#登陆
        register_form = RegisterForm(request.POST)
        if register_form.is_valid():#表单验证
            email = request.POST.get("email", "")</code>
            if UserProfile.objects.filter(email = email):
                return render(request, "register.html",{"register_form":register_form,"msg": "用户已经存在"})
            pass_word = request.POST.get("password", "")
            user_profile = UserProfile()#实例化用户数据库
            user_profile.username = email
            user_profile.email = email
            user_profile.is_active = False#邮箱验证状态
            user_profile.password = make_password(pass_word)#密码生成
            user_profile.save()#保存数据
            send_register_email(email,"register")#发送邮件
            return render(request,"login.html")
        else:
            return render(request, "register.html",{"register_form":register_form})

激活用户邮箱:.

app.views.py登陆视图

<code class="language-python">class LoginView(View):
    def get(self,request):
        return render(request, "login.html", {})
    def post(self,request):
        login_form = LoginForm(request.POST)
        if login_form.is_valid():#验证表单填写信息是否有效
            user_name = request.POST.get("username", "")
            pass_word = request.POST.get("password", "")
            user = authenticate(username=user_name, password=pass_word)
            if user is not None:#判断是否匹配
                if user.is_active:#判断用户是否已激活
                    login(request, user)#登陆
                    return render(request, "index.html")
                else:
                    return render(request, "login.html", {"msg": "邮箱未激活"})#未激活提示
            else:
                return render(request, "login.html", {"msg": "用户名或密码错误"})#错误提示
        else:
            return render(request,"login.html",{"login_form":login_form})#表单提示</code>

app.views.py激活

#激活用户邮箱
class ActiveUserView(View):
    def get(self, request,active_code):
        all_records = EmailVerifyRecord.objects.filter(code=active_code)
        if all_records:
            for record in all_records:
                email = record.email
                user = UserProfile.objects.get(email=email)
                user.is_active = True
                user.save()
        return HttpResponse("The param is : " + active_code)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值