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

Django访问首页触发NoReverseMatch错误:找不到'login'视图或路由名称

解决Django NoReverseMatch: Reverse for 'login' not found的问题

嘿,这个问题我太熟啦!核心原因就是URL命名空间没对应上,咱们一步步来搞定它:

问题根源

你的feedback应用已经在子urls.py里设置了app_name = 'feedback',这意味着该应用下所有URL都属于feedback这个命名空间。但你在settings.py里的LOGIN_URL只写了"login",Django找不到没有指定命名空间的login视图,自然就抛出NoReverseMatch错误了。

另外还有个小坑:你的根urls.py里也写了app_name = 'feedback',这是完全多余的,还可能造成命名空间冲突,得删掉。

具体修复步骤

  1. 修正settings.py中的LOGIN_URL
    把原来的:

    LOGIN_URL = "login"
    

    改成带命名空间的格式:

    LOGIN_URL = "feedback:login"
    
  2. 清理根urls.py的冗余配置
    直接删掉根urls.py里的app_name = 'feedback',修改后根urls.py应该是这样:

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('', include('feedback.urls')),
    ]
    

为什么这样能解决?

当@login_required检测到用户未登录时,会尝试反向解析LOGIN_URL指定的地址。现在我们加上了feedback:这个命名空间前缀,Django就能准确找到你在feedback/urls.py里定义的name="login"的视图了,重定向流程就能正常跑起来啦。

你可以再测试一下:未登录状态访问首页,应该会自动跳转到login页面,登录成功后也能正常回到首页,不会再出现那个烦人的错误啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 19:03:01