1

我正在尝试使用此博客中的 django-voting 教程:

http://new.justinlilly.com/blog/2008/nov/04/django-voting-a-brief-tutorial/

让一个简单的向上/向下投票系统在我的应用程序上运行。但就像该帖子的第一个评论者一样,urls.py 中的这段代码:

urlpatterns = patterns('',
 url(r'^(?P[-\w]+)/(?Pup|down|clear)vote/?$', vote_on_object, tip_dict, name="tip-voting"),
)

给我这个错误:

unknown specifier: ?P[

我对正则表达式很糟糕,有人知道如何修复该网址吗?

4

1 回答 1

3

看起来他的博客正在破坏 URL。应该是:

url(r'^(?P<slug>[-\w]+)/(?P<direction>up|down|clear)vote/?$', vote_on_object, tip_dict, name="tip-voting"),

Python 文档中使用的模式是一个命名组:

(?P<name>...)

Similar to regular parentheses, but the substring matched by the group

可以通过符号组名称在正则表达式的其余部分中访问。组名必须是有效的 Python 标识符,并且每个组名只能在正则表达式中定义一次。符号组也是一个编号组,就好像该组没有命名一样。所以下例中名为 id 的组也可以引用为编号组 1。

For example, if the pattern is `(?P<id>[a-zA-Z_]\w*)`, the group can be

在匹配对象的方法的参数中通过其名称引用,例如 m.group('id')or m.end('id'),并且在正则表达式本身中通过名称(使用(?P=id))和给定的替换文本.sub()(使用\g<id>)。

于 2009-08-18T21:01:08.100 回答