Django:从重置密码页面重定向登录用户

Django:从重置密码页面重定向登录用户,django,django-views,django-templates,Django,Django Views,Django Templates,如果用户登录,我想限制对重置密码页面的访问,并将其重定向到主页 我尝试使用另一个像这样的类,但它不起作用 #views.py class MyPasswordResetView(UserPassesTestMixin, PasswordResetView): template_name = 'security/reset_password.html' def test_func(self): if self.request.user.is_authenticated:

如果用户登录,我想限制对重置密码页面的访问,并将其重定向到主页

我尝试使用另一个像这样的类,但它不起作用

#views.py
class MyPasswordResetView(UserPassesTestMixin, PasswordResetView):
template_name = 'security/reset_password.html'

   def test_func(self):
    if self.request.user.is_authenticated:
        return redirect("home-page")
    return self.request.user.is_anonymous
但它不起作用

#urls.py
urlpatterns = [
path('register/', register_page, name = "register-page"),
path('home/', home, name = "home-page"),
path('logout/', logout_view, name = "logout"),
path('login/', login_page, name = "login"),

path('account/', account_view, name = "account"),


path('change_password/', auth_views.PasswordChangeView.as_view(template_name = "security/change_password.html"), name = "password_change"),
path('change_password/done/', auth_views.PasswordChangeDoneView.as_view(template_name = "security/change_password_succes.html"), name = "password_change_done"),



path('reset_password/', MyPasswordResetView.as_view(subject_template_name = "security/password_reset_subject.txt", email_template_name = "security/password_reset_email.html", template_name = "security/reset_password.html"), name = "password_reset"),

path('reset_password/done/', auth_views.PasswordResetDoneView.as_view(template_name = "security/password_reset_done.html"), name = "password_reset_done"),

path('reset_password_din_mail_venita/<uidb64>/<token>/', auth_views.PasswordResetConfirmView.as_view(template_name = "security/ajunge_din_mail_aici.html"), name='password_reset_confirm'),


path('reset_password/complete/', auth_views.PasswordResetCompleteView.as_view(template_name = "security/password_reset_complete.html"), name = "password_reset_complete"),
#url.py
URL模式=[
路径('register/',register_page,name=“register page”),
路径('home/',home,name=“主页”),
路径('logout/',logout_视图,name=“logout”),
路径('login/',login_页,name=“login”),
路径('account/',account_视图,name=“account”),
路径('change_password/',auth_views.PasswordChangeView.as_view(template_name=“security/change_password.html”),name=“password_change”),
路径('change_password/done/',auth_views.PasswordChangeDoneView.as_view(template_name=“security/change_password\u success.html”),name=“password\u change\u done”),
路径('reset_password/',MyPasswordResetView.as_view(subject_template_name=“security/password_reset_subject.txt”,email_template_name=“security/password_reset_email.html”,template_name=“security/reset_password.html”),name=“password_reset”),
路径('reset_password/done/',auth_views.PasswordResetDoneView.as_view(template_name=“security/password_reset_done.html”),name=“password_reset_done”),
路径('reset\u password\u din\u mail\u venita//',auth\u views.PasswordResetConfirmView.as\u view(template\u name=“security/ajunge\u din\u mail\u aici.html”),name='password\u reset\u confirm'),
路径('reset\u password/complete/',auth\u views.PasswordResetCompleteView.as\u view(template\u name=“security/password\u reset\u complete.html”),name=“password\u reset\u complete”),
]您可以覆盖,例如,这也可以在
注销视图中完成,以注销用户:

class MyPasswordResetView(PasswordResetView):
    template_name = 'security/reset_password.html'

   def dispatch(self, *args, **kwargs):
       if self.request.user.is_authenticated:
           return redirect('home-page')
       return super().dispatch(*args, **kwargs)
类MyPasswordResetView(PasswordResetView):
模板名称='security/reset\u password.html'
def调度(自身、*args、**kwargs):
如果self.request.user.u经过身份验证:
返回重定向('主页')

return super().dispatch(*args,**kwargs)
Awesome man!非常感谢您的快速回复!很好用!现在我学到了一些关于分派功能的新知识!