在用户注册函数中,使用户的激活状态为否:
userprofile.is_active = False
配置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',{})
然后在用户登录的方法中,判断用户的激活状态,非激活就不允许登录
完成;