2015-09-27 215 views
-1

我有以下網址:Django的NoReverseMatch在

url(r'^%sdform/' %(URLPREFIX), pv.dform, name='dform'),

url(r'^%sform/(P?<growl>.*)/' %(URLPREFIX), pv.dform, name='dform'),

視圖代碼:

def dform(request, growl = None)是方法簽名

重定向代​​碼:

msg = 'test' 
return redirect('dform', growl=msg) 

任何想法,爲什麼我得到那個錯誤?我正確的參數發送正確的參數與正確的參數名稱和所有。

編輯: 基於下面的答案,我想:

url(r'^%sdform/(P?<growl>.*)/' %(URLPREFIX), pv.dform, name='dform_message')

,改變了重定向到:

return redirect('dform_message', growl='Updated Settings')

我仍然得到NoReverseMatch

+1

什麼是URLPREFIX?這似乎不是構建您的URL模式的正確方法。 –

+0

爲什麼不呢?我通過lighttpd設置了一個反向代理,所以這個應用程序可能位於'http:// mydomain/djangoapp1'和'http:// mydomian2/djangoapp2'等等,所以我可以設置一個環境變量並通過settings.py讀取它以設置web應用程序的「應用程序上下文」。那有什麼問題? – mikeb

+0

您的網絡服務器應該通過SCRIPT_NAME環境變量傳遞位置; Django自動讀取並處理所有內容。你不需要做你正在做的事情。 –

回答

-1

我認爲你的問題是你不應該爲不同的網址使用相同的名稱(django docu)。

+0

我改了名字並得到了相同的結果。 – mikeb

+0

名稱不必是唯一的。事實上,當你有多個不同參數的模式用於同一個視圖時,我會建議給它們相同的名稱。 – knbk