2012-06-15 122 views
3

我已經在這個太多時間了,我看不到了,我做錯了什麼:Django的URL模式匹配

url(r'^baz/([a-z0-9]+)/([a-z0-9]+)/[0-9]/$', 'foobar.views.baz') 

def baz(request, xxx, yyy, zzz): 
    pass 

這是被請求的實際URL:

http://localhost:8000/baz/75ca0f5bf13d67895e23419c25f82e87f3f5f95f/f733dbf686cd51f911e533d5a351f81394c9db5c/0/ 

的Django保持在我拋出這個錯誤:

baz() takes exactly 4 arguments (3 given) 

我在做什麼錯?

回答

6

你錯過了正則表達式中最後一塊parens。

url(r'^baz/([a-z0-9]+)/([a-z0-9]+)/([0-9])/$', 'foobar.views.baz') 

隨着括號Python會捕捉[0-9]作爲一個羣體,現在你會得到所有3個參數(+的self),而不是2

+0

感謝馬蒂亞斯!我在那個文件的一些早期版本中實際上已經有了parens! – Lorenzo