Django NoReverseMatch错误的参数数量

时间:2016-09-02 03:12:16

标签: python django

在为我的某个网址添加新参数后,我收到NoReverseMatch错误。最初,url(r'^(?P<myID>[0-9]+)/go/(?P<otherID>[0-9]+)/$', views.go, name='go') 中的网址已

url(r'^(?P<myID>[0-9]+)/go/(?P<listID>[0-9]+)/(?P<otherID>[0-9]+)/$', views.go, name='go')

这很有效。我把它改成了

go

并更新了views.py中的函数def go(request,myID,listID,otherID):#...以接受另一个参数(my_app/18/go/14/12/)。新的论点没有得到承认。当我尝试从我的本地服务器转到Reverse for 'go' with arguments '(18, 12)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['frackr/(?P<myID>[0-9]+)/go/(?P<listID>[0-9]+)/(?P<otherID>[0-9]+)/$'] 时(例如),它会给出错误

listID

所以它似乎无法识别listID参数。但是,调试消息表明视图函数中的一个局部变量为u'14',其值为{{1}}。所以问题似乎不是来自解释URL。

我已经看过很多问题试图解决这个问题,但似乎没有人遇到同样的问题。我意识到这可能是一个初学者的错误,但任何帮助都会非常感激。

2 个答案:

答案 0 :(得分:1)

您的错误与您的函数参数无关。它明确指出错误是reverse错误。

回溯将告诉您确切调用reverse的位置,并且该函数需要更新为使用3个参数,而不是2。

直接在python中调用reverse(),通过模板调用{% url %},使用错误的参数调用get_absolute_url等等,但回溯会告诉您确切的位置。

答案 1 :(得分:0)

发布完整的错误堆栈跟踪,以便可以知道哪个文件是问题的原因。

检查您的模板。 django有可能只使用两个args来调用模板中的url。尝试使用命名空间和名称在模板中调用url,如下所示。

{% url 'go' arg1 arg2 arg3 %}