如何禁用Django内置认证视图中的部分URL?
自定义启用Django内置认证视图的部分URL
当你用path("accounts/", include("django.contrib.auth.urls"))导入内置认证URL时,会自动加载所有相关功能。如果只需要部分功能,别直接include整个模块,手动添加需要的URL条目就行,精准控制哪些功能启用。
具体操作步骤:
- 在你的
urls.py中导入需要的认证视图:
from django.contrib.auth import views as auth_views
- 手动添加你需要保留的URL,比如只启用登录、登出、密码修改功能:
urlpatterns = [ # 登录页面 path("accounts/login/", auth_views.LoginView.as_view(), name="login"), # 登出页面 path("accounts/logout/", auth_views.LogoutView.as_view(), name="logout"), # 密码修改页面 path("accounts/password_change/", auth_views.PasswordChangeView.as_view(), name="password_change"), # 密码修改完成提示页面 path("accounts/password_change/done/", auth_views.PasswordChangeDoneView.as_view(), name="password_change_done"), # 项目其他URL... ]
这样设置后,密码重置相关的URL不会被注册,自然无法访问。另外,保持URL的name参数和内置命名一致,模板里原有的{% url 'login' %}这类标签不用修改,直接兼容。
如果需要自定义模板,还可以给视图添加template_name参数指定自定义模板,比如:
path("accounts/login/", auth_views.LoginView.as_view(template_name="myapp/custom_login.html"), name="login"),
内容的提问来源于stack exchange,提问作者Mihai P.
相关产品推荐
相关产品推荐

