8、注册用户的激活功能设计

在用户注册函数中,使用户的激活状态为否:

userprofile.is_active = False

8、注册用户的激活功能设计_第1张图片

配置urls.py,提取url中的变量

最后一行,即:可以把active/之后的字符储存在变量active_code中

from django.contrib import admin
from django.views.generic import TemplateView
from django.urls import path,include
import xadmin
#导入登录方法类
from users.views import LoginView,RegisterView,ActiveUserView

urlpatterns = [
    path('xadmin/', xadmin.site.urls),
    path('', TemplateView.as_view(template_name= 'index.html'),name = 'index'),
    path('login/',LoginView.as_view(),name = 'login'),
    #并配置登录页面
    path('register/',RegisterView.as_view(),name = 'register'),
    path('captcha/', include('captcha.urls')),
    path('active/', ActiveUserView.as_view(), name = 'user_active')
]

然后在view.py文件中建立ActiveUserView类,用来处理用户激活的功能:

class ActiveUserView(View):
    def get(self,request,active_code):
        # 这里也可以用get方法来代替filter来查询,但是如果get不到数据或多出数据就会抛出异常,而filter查询不到数据,会返回一个空集
        #且这里获取的是一个字典dict
        all_code = EmailVerifyRecord.objects.filter(code=active_code)
        # 判断all_code是否为空,不为空的话
        if all_code:
            # 遍历获取到的code,存到recode
            for recode in all_code:
                # 利用recode对应的接受邮箱,找到邮箱对应的用户,这里就可以使用get来获取了,娶不到用户就报错
                email = recode.email
                user = UserProfile.objects.get(email = email)
                # 然后对用户的is_active进行修改:
                user.is_active = True
                # 不要忘记保存
                user.save()
        return  render(request,'login.html',{})

然后在用户登录的方法中,判断用户的激活状态,非激活就不允许登录

8、注册用户的激活功能设计_第2张图片

完成;

你可能感兴趣的:(python实战)