NoReverseMatch异常 - 使用关键字参数重定向

时间:2014-09-18 08:27:19

标签: django

我在尝试使用Django的重定向时遇到NoReverseMatch错误,并且无法弄清楚我做错了什么。

观点:

def addConjugatedForm(request):
    #update database
    return redirect('findConjugatedForms', chapter=ch.chapter, verse=verse.verse, book=b.name)

def findConjugatedForms(request, book, chapter, verse):
    #return a view

在urls.py中:

url(r'^findConjugatedForms/(?P<book>\w+)/(?P<chapter>\d+)/(?P<verse>\d+)/', 'findConjugatedForms'),

网址作为网址,即“... findConjugatedForms / Romans / 3/24”返回页面。但是当提交该页面上的表单时,它不会重定向回来。

我在我的网址中命名了参数(这似乎是Stack Overflow上其他问题中的常见问题),并且kwargs的值似乎是正确的。

Reverse for 'findConjugatedForms' with arguments '()' and keyword arguments '{'chapter': 3, 'verse': 24, 'book': u'Romans'}' not found. 0 pattern(s) tried: []

我错过了什么?

1 个答案:

答案 0 :(得分:1)

redirect在内部使用reverse。您需要为URL定义视图名,或使用Python路径或传递可调用对象:

url(r'^findConjugatedForms/(?P<book>\w+)/(?P<chapter>\d+)/(?P<verse>\d+)/',
    'findConjugatedForms',
    name='findConjugatedForms')  # Define a name

此外,在模式中添加后缀'$'以防止网址与以findConjugatedForms/book/chapter/verse/

开头的其他网址匹配