邮箱注册登录 之 激活邮箱 | Django

Posted 胡说八道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了邮箱注册登录 之 激活邮箱 | Django相关的知识,希望对你有一定的参考价值。

# --------------------------------------------| 激活邮箱
# 在注册过程中,保存一个is_active=False字段,表示用户还未激活;
# 用户点击链接之后激活;
# 提取链接url中active/后面的激活码,与数据库code进行比对;
# urls.py
from users.views import ActiveUserView
...
url(r^active/(?P<active_code>.*)/$, ActiveUserView.as_view(), name="user_active")
    
# views.py
from django.views.generic.base import View
from users.models import EmailVerifyRecord

class ActiveUserView(View):
    def get(self, request, active_code):
        """用户激活"""
        # 从url获取的激活码,判断数据库中是否存在同样的值
        code_record = EmailVerifyRecord.objects.filter(code=active_code)[0]
        if code_record:
            # 如果数据库中已经保存了该激活码|
            # 获取邮箱表中的email字段值
            email_from_record = code_record.email
            # 在Userprofile表中查询对应email,修改is_active激活状态
            user = UserProfile,objects.get(email=email_from_record)
            user.is_active = True
            user.save()
        else:
            # 数据库中没有找到激活码
            return render(request, "register_fail.html)

# views.py
# 再到登录login视图中,添加是否激活is_active的条件
from django.views.generic.base imoprt View
# View这视图类中,有类似http的get,post等方法

class LoginView(View):
    def get(self, request):
        return render(request, "login.html", locals())
    
    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})

 

以上是关于邮箱注册登录 之 激活邮箱 | Django的主要内容,如果未能解决你的问题,请参考以下文章

简单的用户注册|登录|修改密码|邮箱激活 |Django

Django用户注册邮箱验证实践

邮箱怎么激活

Django 实现网站注册用户邮箱验证功能

servlet邮箱激活验证实例含代码

10-邮箱注册登录文字总结 | Django