【问题标题】:URL problem w/ code from a django-voting tutorial来自 django-voting 教程的带有代码的 URL 问题
【发布时间】:2009-08-18 20:55:45
【问题描述】:

我正在尝试使用此博客中的 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[

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

【问题讨论】:

    标签: django django-voting


    【解决方案1】:

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

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

    使用的模式来自Python docs,是一个命名组:

    (?P&lt;name&gt;...)

    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')m.end('id'),还有 在正则表达式中按名称 本身(使用(?P=id))和替换 给.sub() 的文本(使用\g&lt;id&gt;)。

    【讨论】:

    • 啊,你说得对,我应该注意到这一点。现在工作得很好,谢谢。
    猜你喜欢
    • 2021-11-08
    • 2011-06-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-05
    • 2021-09-25
    • 1970-01-01
    • 2016-12-18
    • 1970-01-01
    相关资源
    最近更新 更多