|
|
|
|
@ -33,7 +33,7 @@ logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
|
class RegisterView(FormView):
|
|
|
|
|
form_class = RegisterForm
|
|
|
|
|
template_name = 'account/registration_form.html'
|
|
|
|
|
template_name = 'account/registration_form.html'#处理用户注册逻辑,指定表单类RegisterForm和模板account/registration_form.html。
|
|
|
|
|
|
|
|
|
|
@method_decorator(csrf_protect)
|
|
|
|
|
def dispatch(self, *args, **kwargs):
|
|
|
|
|
@ -77,11 +77,11 @@ class RegisterView(FormView):
|
|
|
|
|
else:
|
|
|
|
|
return self.render_to_response({
|
|
|
|
|
'form': form
|
|
|
|
|
})
|
|
|
|
|
})#form_valid方法中,保存用户并设置为非活跃状态,生成邮箱验证链接并发送验证邮件,最后重定向到结果页。
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class LogoutView(RedirectView):
|
|
|
|
|
url = '/login/'
|
|
|
|
|
url = '/login/'#处理用户登出,登出后重定向到/login/
|
|
|
|
|
|
|
|
|
|
@method_decorator(never_cache)
|
|
|
|
|
def dispatch(self, request, *args, **kwargs):
|
|
|
|
|
@ -90,7 +90,7 @@ class LogoutView(RedirectView):
|
|
|
|
|
def get(self, request, *args, **kwargs):
|
|
|
|
|
logout(request)
|
|
|
|
|
delete_sidebar_cache()
|
|
|
|
|
return super(LogoutView, self).get(request, *args, **kwargs)
|
|
|
|
|
return super(LogoutView, self).get(request, *args, **kwargs)#get方法中调用logout登出用户,删除侧边栏缓存后完成重定向
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class LoginView(FormView):
|
|
|
|
|
@ -113,8 +113,7 @@ class LoginView(FormView):
|
|
|
|
|
redirect_to = '/'
|
|
|
|
|
kwargs['redirect_to'] = redirect_to
|
|
|
|
|
|
|
|
|
|
return super(LoginView, self).get_context_data(**kwargs)
|
|
|
|
|
|
|
|
|
|
return super(LoginView, self).get_context_data(**kwargs)#处理用户登录逻辑,指定表单类LoginForm、模板account / login.html和成功后重定向地址 /
|
|
|
|
|
def form_valid(self, form):
|
|
|
|
|
form = AuthenticationForm(data=self.request.POST, request=self.request)
|
|
|
|
|
|
|
|
|
|
@ -130,7 +129,7 @@ class LoginView(FormView):
|
|
|
|
|
else:
|
|
|
|
|
return self.render_to_response({
|
|
|
|
|
'form': form
|
|
|
|
|
})
|
|
|
|
|
})#form_valid方法中验证表单,登录用户并根据“记住我”选项设置会话过期时间
|
|
|
|
|
|
|
|
|
|
def get_success_url(self):
|
|
|
|
|
|
|
|
|
|
@ -139,7 +138,7 @@ class LoginView(FormView):
|
|
|
|
|
url=redirect_to, allowed_hosts=[
|
|
|
|
|
self.request.get_host()]):
|
|
|
|
|
redirect_to = self.success_url
|
|
|
|
|
return redirect_to
|
|
|
|
|
return redirect_to#get_success_url方法处理登录后的重定向地址,确保其安全性
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def account_result(request):
|
|
|
|
|
@ -147,7 +146,7 @@ def account_result(request):
|
|
|
|
|
id = request.GET.get('id')
|
|
|
|
|
|
|
|
|
|
user = get_object_or_404(get_user_model(), id=id)
|
|
|
|
|
logger.info(type)
|
|
|
|
|
logger.info(type)#处理注册和邮箱验证的结果逻辑,根据type参数区分场景:
|
|
|
|
|
if user.is_active:
|
|
|
|
|
return HttpResponseRedirect('/')
|
|
|
|
|
if type and type in ['register', 'validation']:
|
|
|
|
|
@ -177,7 +176,7 @@ def account_result(request):
|
|
|
|
|
|
|
|
|
|
class ForgetPasswordView(FormView):
|
|
|
|
|
form_class = ForgetPasswordForm
|
|
|
|
|
template_name = 'account/forget_password.html'
|
|
|
|
|
template_name = 'account/forget_password.html'#处理忘记密码逻辑,指定表单类ForgetPasswordForm和模板account/forget_password.html
|
|
|
|
|
|
|
|
|
|
def form_valid(self, form):
|
|
|
|
|
if form.is_valid():
|
|
|
|
|
@ -186,10 +185,10 @@ class ForgetPasswordView(FormView):
|
|
|
|
|
blog_user.save()
|
|
|
|
|
return HttpResponseRedirect('/login/')
|
|
|
|
|
else:
|
|
|
|
|
return self.render_to_response({'form': form})
|
|
|
|
|
return self.render_to_response({'form': form})#form_valid方法中验证表单后,重置用户密码并重定向到登录页
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ForgetPasswordEmailCode(View):
|
|
|
|
|
class ForgetPasswordEmailCode(View):# 处理忘记密码的邮箱验证码发送逻辑
|
|
|
|
|
|
|
|
|
|
def post(self, request: HttpRequest):
|
|
|
|
|
form = ForgetPasswordCodeForm(request.POST)
|
|
|
|
|
@ -201,4 +200,4 @@ class ForgetPasswordEmailCode(View):
|
|
|
|
|
utils.send_verify_email(to_email, code)
|
|
|
|
|
utils.set_code(to_email, code)
|
|
|
|
|
|
|
|
|
|
return HttpResponse("ok")
|
|
|
|
|
return HttpResponse("ok")# post方法中验证邮箱表单,生成并发送验证码,将验证码存入缓存后返回成功标识
|
|
|
|
|
|