|
|
|
|
@ -88,8 +88,13 @@ class RegisterView(FormView):
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
# 指定使用的表单类
|
|
|
|
|
form_class = RegisterForm
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
template_name = 'account/registration_form.html'
|
|
|
|
|
# 使用装饰器确保视图禁用缓存(never_cache)并启用 CSRF 防护
|
|
|
|
|
=======
|
|
|
|
|
template_name = 'account/registration_form.html'#处理用户注册逻辑,指定表单类RegisterForm和模板account/registration_form.html。
|
|
|
|
|
|
|
|
|
|
>>>>>>> LXY_branch
|
|
|
|
|
@method_decorator(csrf_protect)
|
|
|
|
|
def dispatch(self, *args, **kwargs):
|
|
|
|
|
# 调用父类方法处理请求
|
|
|
|
|
@ -180,12 +185,16 @@ class RegisterView(FormView):
|
|
|
|
|
# 表单无效时重新渲染表单(显示错误信息)
|
|
|
|
|
return self.render_to_response({
|
|
|
|
|
'form': form
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
})
|
|
|
|
|
=======
|
|
|
|
|
emailto=[user.email], # 收件人邮箱(新注册用户的邮箱)
|
|
|
|
|
title='验证您的电子邮箱', # 邮件标题
|
|
|
|
|
content=content # 邮件HTML内容
|
|
|
|
|
)
|
|
|
|
|
=======
|
|
|
|
|
})#form_valid方法中,保存用户并设置为非活跃状态,生成邮箱验证链接并发送验证邮件,最后重定向到结果页。
|
|
|
|
|
>>>>>>> LXY_branch
|
|
|
|
|
|
|
|
|
|
# 4. 跳转到注册结果页(提示用户查收验证邮件)
|
|
|
|
|
url = reverse('accounts:result') + f'?type=register&id={str(user.id)}'
|
|
|
|
|
@ -197,10 +206,15 @@ class RegisterView(FormView):
|
|
|
|
|
|
|
|
|
|
# 登出视图,继承自RedirectView,重定向到登录页面
|
|
|
|
|
class LogoutView(RedirectView):
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
# 登出后重定向的URL
|
|
|
|
|
url = '/login/'
|
|
|
|
|
# 使用never_cache装饰器确保视图不会被缓存
|
|
|
|
|
=======
|
|
|
|
|
url = '/login/'#处理用户登出,登出后重定向到/login/
|
|
|
|
|
|
|
|
|
|
>>>>>>> LXY_branch
|
|
|
|
|
@method_decorator(never_cache)
|
|
|
|
|
def dispatch(self, request, *args, **kwargs):
|
|
|
|
|
# 调用父类的dispatch方法处理请求
|
|
|
|
|
@ -223,6 +237,7 @@ class LogoutView(RedirectView):
|
|
|
|
|
logout(request)
|
|
|
|
|
# 删除侧边栏缓存
|
|
|
|
|
delete_sidebar_cache()
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
# 调用父类的get方法完成重定向
|
|
|
|
|
return super(LogoutView, self).get(request, *args, **kwargs)
|
|
|
|
|
=======
|
|
|
|
|
@ -231,6 +246,9 @@ class LogoutView(RedirectView):
|
|
|
|
|
delete_sidebar_cache() # 删除侧边栏缓存(可能存储了用户相关信息)
|
|
|
|
|
return super(LogoutView, self).get(request, *args, **kwargs) # 执行重定向
|
|
|
|
|
>>>>>>> JYN_branch
|
|
|
|
|
=======
|
|
|
|
|
return super(LogoutView, self).get(request, *args, **kwargs)#get方法中调用logout登出用户,删除侧边栏缓存后完成重定向
|
|
|
|
|
>>>>>>> LXY_branch
|
|
|
|
|
|
|
|
|
|
# 登录视图,继承自FormView
|
|
|
|
|
class LoginView(FormView):
|
|
|
|
|
@ -287,6 +305,7 @@ class LoginView(FormView):
|
|
|
|
|
kwargs['redirect_to'] = redirect_to
|
|
|
|
|
# 调用父类方法获取其他上下文数据
|
|
|
|
|
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
return super(LoginView, self).get_context_data(**kwargs)
|
|
|
|
|
# 表单验证通过后的处理
|
|
|
|
|
def form_valid(self, form):
|
|
|
|
|
@ -296,6 +315,9 @@ class LoginView(FormView):
|
|
|
|
|
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和成功后重定向地址 /
|
|
|
|
|
>>>>>>> LXY_branch
|
|
|
|
|
def form_valid(self, form):
|
|
|
|
|
"""表单验证通过后执行的逻辑(登录核心流程)"""
|
|
|
|
|
# 用Django内置AuthenticationForm重新验证(确保认证逻辑符合默认规范)
|
|
|
|
|
@ -334,8 +356,13 @@ class LoginView(FormView):
|
|
|
|
|
# 表单无效,重新渲染表单并显示错误
|
|
|
|
|
return self.render_to_response({
|
|
|
|
|
'form': form
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
})
|
|
|
|
|
# 获取成功后的跳转URL
|
|
|
|
|
=======
|
|
|
|
|
})#form_valid方法中验证表单,登录用户并根据“记住我”选项设置会话过期时间
|
|
|
|
|
|
|
|
|
|
>>>>>>> LXY_branch
|
|
|
|
|
def get_success_url(self):
|
|
|
|
|
|
|
|
|
|
# 从POST参数中获取重定向URL
|
|
|
|
|
@ -346,6 +373,7 @@ class LoginView(FormView):
|
|
|
|
|
self.request.get_host()]):
|
|
|
|
|
# 如果不安全则使用默认成功URL
|
|
|
|
|
redirect_to = self.success_url
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
=======
|
|
|
|
|
# 表单验证失败(如密码错误),重新渲染表单并显示错误
|
|
|
|
|
return self.render_to_response({'form': form})
|
|
|
|
|
@ -360,6 +388,9 @@ class LoginView(FormView):
|
|
|
|
|
redirect_to = self.success_url # 不安全则使用默认重定向地址
|
|
|
|
|
>>>>>>> JYN_branch
|
|
|
|
|
return redirect_to
|
|
|
|
|
=======
|
|
|
|
|
return redirect_to#get_success_url方法处理登录后的重定向地址,确保其安全性
|
|
|
|
|
>>>>>>> LXY_branch
|
|
|
|
|
|
|
|
|
|
# 账户操作结果页面(如注册成功、邮箱验证等)
|
|
|
|
|
def account_result(request):
|
|
|
|
|
@ -385,9 +416,13 @@ def account_result(request):
|
|
|
|
|
|
|
|
|
|
# 获取对应的用户,若不存在则返回404
|
|
|
|
|
user = get_object_or_404(get_user_model(), id=id)
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
logger.info(type) # 日志记录操作类型
|
|
|
|
|
|
|
|
|
|
# 若用户已激活,直接重定向到首页(避免重复验证)
|
|
|
|
|
=======
|
|
|
|
|
logger.info(type)#处理注册和邮箱验证的结果逻辑,根据type参数区分场景:
|
|
|
|
|
>>>>>>> LXY_branch
|
|
|
|
|
if user.is_active:
|
|
|
|
|
return HttpResponseRedirect('/')
|
|
|
|
|
|
|
|
|
|
@ -451,6 +486,7 @@ class ForgetPasswordView(FormView):
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
# 使用的表单类
|
|
|
|
|
form_class = ForgetPasswordForm
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
# 模板文件路径
|
|
|
|
|
template_name = 'account/forget_password.html'
|
|
|
|
|
=======
|
|
|
|
|
@ -461,6 +497,9 @@ class ForgetPasswordView(FormView):
|
|
|
|
|
form_class = ForgetPasswordForm # 指定使用的密码重置表单
|
|
|
|
|
template_name = 'account/forget_password.html' # 密码重置页面模板路径
|
|
|
|
|
>>>>>>> JYN_branch
|
|
|
|
|
=======
|
|
|
|
|
template_name = 'account/forget_password.html'#处理忘记密码逻辑,指定表单类ForgetPasswordForm和模板account/forget_password.html
|
|
|
|
|
>>>>>>> LXY_branch
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 表单验证通过后的处理
|
|
|
|
|
@ -485,6 +524,7 @@ class ForgetPasswordView(FormView):
|
|
|
|
|
# 重定向到登录页面
|
|
|
|
|
return HttpResponseRedirect('/login/')
|
|
|
|
|
else:
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
# 表单无效,重新渲染表单并显示错误
|
|
|
|
|
=======
|
|
|
|
|
# 3. 密码重置成功,重定向到登录页
|
|
|
|
|
@ -498,6 +538,13 @@ class ForgetPasswordView(FormView):
|
|
|
|
|
class ForgetPasswordEmailCode(View):
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
# 处理POST请求
|
|
|
|
|
=======
|
|
|
|
|
return self.render_to_response({'form': form})#form_valid方法中验证表单后,重置用户密码并重定向到登录页
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class ForgetPasswordEmailCode(View):# 处理忘记密码的邮箱验证码发送逻辑
|
|
|
|
|
|
|
|
|
|
>>>>>>> LXY_branch
|
|
|
|
|
def post(self, request: HttpRequest):
|
|
|
|
|
# 验证表单
|
|
|
|
|
form = ForgetPasswordCodeForm(request.POST)
|
|
|
|
|
@ -512,6 +559,7 @@ class ForgetPasswordEmailCode(View):
|
|
|
|
|
utils.send_verify_email(to_email, code)
|
|
|
|
|
# 存储验证码(通常有有效期)
|
|
|
|
|
utils.set_code(to_email, code)
|
|
|
|
|
<<<<<<< HEAD
|
|
|
|
|
# 返回成功响应
|
|
|
|
|
return HttpResponse("ok")
|
|
|
|
|
=======
|
|
|
|
|
@ -535,3 +583,7 @@ class ForgetPasswordEmailCode(View):
|
|
|
|
|
# 3. 操作成功,返回“ok”提示
|
|
|
|
|
return HttpResponse("ok")
|
|
|
|
|
>>>>>>> JYN_branch
|
|
|
|
|
=======
|
|
|
|
|
|
|
|
|
|
return HttpResponse("ok")# post方法中验证邮箱表单,生成并发送验证码,将验证码存入缓存后返回成功标识
|
|
|
|
|
>>>>>>> LXY_branch
|
|
|
|
|
|