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

Django升级至2.2后出现NoReverseMatch找不到'uutiset'路由问题

Django 2.2 反向解析NoReverseMatch报错原因及修复方案

报错核心原因

你使用了extranet:uutiset这种带应用命名空间的反向解析语法,但Django 2.x对命名空间和路由命名的要求比1.4严格,你的配置缺失两个必要项:

  • 应用路由没有声明app_name指定命名空间
  • uutiset对应的路由没有设置name参数和解析名对应

修复步骤

1. 调整应用路由配置(extranet/urls.py)

添加app_name声明命名空间,同时给路由增加name属性:

from django.conf.urls import url
from extranet.views import *

# Django2.0+必须显式声明应用命名空间,对应模板里的extranet前缀
app_name = 'extranet'

urlpatterns = [
    # 增加name='uutiset',和模板反向解析的名称完全匹配
    url(r'^uutiset/', uutiset, name='uutiset'),
]

2. 确认根路由的include配置(项目根目录的urls.py)

你需要在根路由中引入extranet应用的路由时指定命名空间(如果之前没配置的话):

from django.conf.urls import url, include

urlpatterns = [
    # 其他系统路由,比如admin路由等
    url(r'', include('extranet.urls', namespace='extranet')),
]

如果你的uutiset路由之前是直接写在根路由里,没有用include引入应用路由,要么调整为上面的分层路由写法,要么直接去掉模板中{% url %}里的extranet:前缀,直接写{% url 'uutiset' %},同时给根路由的对应配置加上name='uutiset'即可。

验证

修改完成后重启服务,访问/uutiset/路径即可正常加载模板,反向解析不会再报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:54:07