2012-06-15 93 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