Django: NoReverseMatch for HttpResponseRedirect with kwargs

I get the following error:

NoReverseMatch at / updatebooking /

Reverse for 'common.views.myview' with arguments '()' and keyword arguments '{' msg ': "hello",' case ':' success '}' not found.

general / views.py

def view1(request):
    ...
    return HttpResponseRedirect(reverse('common.views.view2', kwargs= {"msg":"hello","case":"success"}))

def view2(request,msg=None,case=None):
    ...

urls.py

url(r'^test1/$','common.views.view1',name='my_view1'), 
url(r'^test2/$','common.views.view2',name='my_view2'),

This line reverse('common.views.view2', kwargs= {"msg":"hello","case":"success"})throws an error.

The error occurs only when used kwargs. The following codes work:

return HttpResponseRedirect(reverse('my_view2'))
return HttpResponseRedirect(reverse('common.views.view2'))

Please help me solve this problem.

+4
source share
2 answers

reverse kwargs, django URL.

url(r'^test2/(?P<msg>\w+)/(?P<case>\w+)$','common.views.view2',name='my_view2')

reverse URLDispatcher . , URLDispatcher, .

+4

URL- msg case, Django . . slug :

url(r'^(?P<slug>[^/]+)/$', 'test.views.detail', name="test-detail")

, / . .

+1

Source: https://habr.com/ru/post/1525218/


All Articles