Django url模式匹配

时间:2012-06-15 10:30:52

标签: python regex django

我已经过了好几个小时了,我再也看不到我做错了什么:

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

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

这是要求的实际网址:

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

Django一直向我抛出这个错误:

baz() takes exactly 4 arguments (3 given)

我做错了什么?

1 个答案:

答案 0 :(得分:6)

你错过了正则表达式中的最后一块parens。

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

使用parens Python会将[0-9]作为一个组捕获,现在您将获得所有3个参数(+ self)而不是2。