版本:Django2.1 python3.6 CentOS6.8
错误提示:
Reverse for ‘list’ with arguments ‘(’’, 1)’ not found. 1 pattern(s) tried: [‘list/(?P<type_id>\d+)/(?P\d+)$’]


首先,看到这个错误,有点意外,这是反向解析错误,但看到地址栏那里已经是127.0.0.1:8000/goods/8,已经是正确跳转了,而且在这之前,我测试过这个view是没问题的。
这是我的URL配置:

可以肯定的是,第二项re_path配置是没问题的,因为在写listView之前就测试过了,就是写了listView之后再测试才出的问题,而且反向解析也是list的出错!但奇怪的是,我匹配listView()的url地址,是可以正常显示!
这是listView页面:

这说明listView的re_path也是正确的!
那么问题来了,错误提示是’list’的反向解析没找到,

而下面的提示又是指向detail.html

我查看了detail.html的代码,就没有找到关于list的反向解析语句!
使用反向解析的也就下面这句

好!上面是我遇到问题的过程!下面是解决问题的关键!!!

detail.html页面是继承base_detail_list.html的,问题就是出在这里!!我查看base_detail_list.html的语句,就是有下面这一句代码!

就是这句list反向解析错误!!把这个页面所有的这一句代码改为正向解析就可以了!
改为:href="/list/{{type.id}}/1"

以上方法是可以解决!但是博主我后来才发现,其实用反向解析也是可以的,是博主我自己粗心了!
我细心分析了一下错误提示,‘(‘’,1)’,很明显是第一个参数没有传入,我再查看了base_detail_list.html的程序,发现问题了

在下面发现了这个程序,这里传入的参数是type.id,然后在这里我并没有引入type参数,只是在上面的那段程序引入了,把type引入就正常了!!!


本文详细记录了一次在Django框架中遇到的反向解析错误的排查过程,通过逐步检查URL配置、视图函数及模板继承关系,最终发现是由于在基模板中未正确传递参数导致的错误。
1330





