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

Django3如何将应用子模块的urls配置引入主urls.py文件

问题原因

反向匹配错误核心是Django内置的auth视图默认会查找全局无命名空间的url名称,你将相关路由放在了指定了app_name='accounts.passwords'的子urls模块中,相当于给这组路由加了accounts.passwords的命名空间,内置视图找不到对应名称的路由就会报错。
直接把路由写在主urls.py中可以正常运行,是因为主urls的路由默认没有命名空间,和内置视图的查找逻辑匹配。另外你不需要将accounts.passwords单独加入INSTALLED_APPS,只要父应用accounts在应用列表中即可。

解决方案

两种常用处理方法按需选择即可:

方法1:为每个内置auth视图指定带命名空间的跳转地址

在accounts/passwords/urls.py中导入reverse_lazy,给每个需要跳转的视图手动指定success_url为带命名空间的路由,修改后的代码如下:

from django.urls import path, reverse_lazy
from django.contrib.auth import views as auth_views

app_name='accounts.passwords'

urlpatterns  = [
    path('password/change/', 
            auth_views.PasswordChangeView.as_view(
                success_url = reverse_lazy('accounts.passwords:password_change_done')
            ), 
            name='password_change'),
    path('password/change/done/',
            auth_views.PasswordChangeDoneView.as_view(), 
            name='password_change_done'),
    path('password/reset/', 
            auth_views.PasswordResetView.as_view(
                success_url = reverse_lazy('accounts.passwords:password_reset_done')
            ), 
            name='password_reset'),
    path('password/reset/done/', 
            auth_views.PasswordResetDoneView.as_view(), 
            name='password_reset_done'),
    path('password/reset/<uidb64>/<token>/', 
            auth_views.PasswordResetConfirmView.as_view(
                success_url = reverse_lazy('accounts.passwords:password_reset_complete')
            ), 
            name='password_reset_confirm'),
    path('password/reset/complete/', 
            auth_views.PasswordResetCompleteView.as_view(), 
            name='password_reset_complete'),
]

同时你存放在templates/registration下的自定义模板中,所有调用{% url %}的地方也要加上命名空间前缀,比如把{% url 'password_reset_done' %}改成{% url 'accounts.passwords:password_reset_done' %}。

方法2:移除子urls的命名空间配置

如果你不需要这组路由使用独立的命名空间,可以直接删掉accounts/passwords/urls.py中的app_name='accounts.passwords'配置,这样路由名称就会变成全局可查找的,和内置视图的逻辑匹配,不需要修改其他代码即可正常运行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:51:03