You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何屏蔽Django django-allauth默认的登录、注册URL路径

屏蔽django-allauth默认登录注册路径的解决方法

默认路由可访问的核心原因是你默认引入了allauth的全量account路由,可通过以下两种方案解决:

方案1:取消全量引入allauth路由,按需注册

如果除了自定义的登录、注册路由外,你不需要用到allauth的其他默认路由(如密码重置、邮箱验证等),或者只需要部分路由,直接删除代码中全量引入allauth的配置即可:

# 删掉这行全量引入的代码
# path('accounts/', include('allauth.account.urls'))

之后你需要用到的allauth其他功能路由,单独手动注册到urlpatterns中,默认的登录、注册路由自然就不会生效。

方案2:覆盖默认路由(适用于需要保留其他allauth默认路由的场景)

如果你需要用到allauth的其他默认路由,不想单独逐个注册,可以利用Django路由从上到下匹配的优先级,在全量引入allauth路由之前,先覆盖默认的登录、注册路径,可选择重定向到自定义路径或者直接返回404:

from django.views.generic import RedirectView
from django.http import Http404
from allauth.account.views import LoginView, SignupView 

urlpatterns = [
    # 你的自定义路由
    url(r'^customurl/login/', LoginView.as_view(), name="custom_login" ),
    # 注意你原配置里的name拼写错误,singup应为signup
    url(r'^customurl/signup/', SignupView.as_view(), name="custom_signup" ),

    # 覆盖默认路径,放在引入allauth路由之前
    # 选择1:永久重定向到自定义路径
    url(r'^accounts/login/$', RedirectView.as_view(pattern_name='custom_login', permanent=True)),
    url(r'^accounts/signup/$', RedirectView.as_view(pattern_name='custom_signup', permanent=True)),

    # 选择2:直接返回404
    # url(r'^accounts/login/$', lambda request: raise Http404()),
    # url(r'^accounts/signup/$', lambda request: raise Http404()),

    # 最后再引入allauth的其他路由
    path('accounts/', include('allauth.account.urls')),
    ...
]

补充配置

修改settings.py的allauth配置,让allauth内部跳转逻辑直接使用你自定义的路径:

# settings.py
ACCOUNT_LOGIN_URL = '/customurl/login/'
ACCOUNT_SIGNUP_URL = '/customurl/signup/'

内容的提问来源于stack exchange,提问作者Taher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 17:06:04