2014-11-21 75 views
0

我宣佈一個網址就像在Django 1.7以下:錯誤NoReverseMatch

URL(R '^頁面(/ \ w {2}/| /)$',MyView.as_view( ),name ='my_name'),

在我的模板中,我想從其名稱中反轉網址。我想:

<form method="post" action="{% url 'my_namespace:my_name' variable %}"> 

<form method="post" action="{% url 'my_namespace:my_name' %}"> 

但沒有什麼工作,它扔例外:

反向的 'MY_NAME' 與參數 '(u'test')」和關鍵字參數 '{}' 未找到。 1個模式嘗試:['page(\/\ w {2} \/| \ /)$']

請幫助給我一些建議。謝謝。

回答

4

正則表達式對於參數'test'的匹配顯示不正確。

如果我們看看正則表達式(/\w{2}/|/), 它似乎捕獲兩個由'OR'(|)運算符分隔的組。第一組是/\w{2}/。這隻會匹配'/',後跟\ w只有2次,後跟'/'。

第二組只匹配'/'。

'test'與這些情況中的任何一個都不匹配,因此引發異常。

我相信正確的正則表達式,我們期待在這裏拍攝會,

(\w+) 

正確的URL結構是這樣的,

url(r'^page/(\w+)/$', MyView.as_view(), name='my_name') 
url(r'^page/$', MyView.as_view(), name='my_name') 

這將匹配給定參數「測試」因爲正則表達式(\w+)表示匹配該組中的任何字符[a-zA-Z0-9_]一次或多次,並且'測試'中的每個字符都屬於該類別。

+0

我試着傳遞兩個字符變量'ab'而不是'測試',但它仍然不起作用。但是,如果我將這個網址按照您的建議拆分爲2,則效果很好。這可能兩個只使用一個url聲明? – 2014-11-22 04:08:33

+0

是的,URL中的參數將消除對URL的調用。 – 2014-11-22 17:27:51