2016-01-20 67 views
0

我是新來的Django所以我希望混亂的車費金額,但是我認爲這是一個有趣的,所以我通過下面的困惑,我有鏈路A和鏈路B(都在做同樣的事情)...的Django使用URL錯誤參數

urls.py

url(r'^testing/([\w\s-].+)/(?P<id>[0-9]+)$', 'testapp.views.test_view', name='test'), 

模板頁面

<a href="{% url 'test' i.name i.id %}">{{i.name}}</a> 
<a href="{% url 'test' i.name i.id %}">{{i.name}}</a> 

鏈路A獲得通過,而鏈路B產生以下錯誤:

Exception Type: NoReverseMatch 

Reverse for 'test' with arguments '('8', '109404')' and keyword arguments '{}' not found. 1 pattern(s) tried: ['test/([\\w\\s-].+)/(?P<id>[0-9]+)$'] 

我已經試過封裝參數,雙重檢查傳遞的數據,我甚至試圖通過鏈接路過相同的數據,然後有同樣的問題B.

有人嗎?我錯過了什麼?

回答

0

的問題是在你的第一個捕獲組:

r'([\w\s-].+)' 

在這裏,你首先有一個字符,沒有量詞設置:[\w\s-]。這匹配一個字符。然後你有一個點(任意字符)與+量詞,即一個或多個。這意味着你需要至少兩個人物:一個匹配[\w\s-],以及一個或多個匹配.+

你大概的意思是拍攝第一字符集一次或多次,即:

r'([\w\s-]+)' 
+0

我想,剛纔,它沒有爲我工作。 – Rootraid

+1

@Jason定義「沒有工作」。你有追溯嗎? – knbk

+0

問題是爲什麼它有時只有工作? – Rootraid