簡體   English   中英

Django:帶有kwargs的HttpResponseRedirect的NoReverseMatch

[英]Django : NoReverseMatch for HttpResponseRedirect with kwargs

我收到以下錯誤:

NoReverseMatch at / updatebooking /

使用參數'()'和關鍵字參數'{'msg':“hello”,'case':'success'}'找不到'common.views.myview'。

通用/ 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'),

這行reverse('common.views.view2', kwargs= {"msg":"hello","case":"success"})拋出錯誤。

只有當我使用kwargs時才會出現錯誤。 以下代碼工作:

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

請幫我解決這個問題。

當您使用kwargs參數reverse ,django會嘗試查找參數化的URL路由。 在您的示例中,匹配路由類似於

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

有關更多詳細信息,請參閱reverseURLDispatcher文檔。 不幸的是,URLDispatcher和反向手冊都對這個特殊功能有點神秘。

你的url沒有msgcase參數,這就是Django找不到它的原因。 請參閱此示例中的paramenter slug

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

我相信您正在嘗試將消息/通知傳遞給另一個視圖。 如果是這種情況,您應該檢查消息框架

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM