【问题标题】:match an alternative url - regular expression django urls匹配另一个 url - 正则表达式 django urls
【发布时间】:2010-12-03 03:51:42
【问题描述】:

我想要一个只有 2 个备选方案的 Django URL:/module/in//module/out/

我正在使用

url(r'^(?P<status>\w+[in|out])/$', 
'by_status', 
name='module_by-status'),

但它匹配其他模式,例如 /module/i//module/n//module/ou/

任何提示表示赞赏:)

【问题讨论】:

    标签: python regex django django-urls


    【解决方案1】:

    试试r'^(?P&lt;status&gt;in|out)/$'

    您需要删除匹配一个或多个字母数字字符或下划线的\w+。 bstpierre 的回答中建议的正则表达式'^(?P&lt;status&gt;\w+(in|out))/$' 将匹配helloingood_byeout 等等。

    请注意,如果您在 url 模式中使用竖线(竖线)字符 |,则 Django cannot reverse the regular expression。如果您需要在模板中使用 url 标签,则需要编写两种 url 模式,一种用于in,一种用于out

    【讨论】:

    • @bluefish 谢谢,我已经更新了提到限制的答案
    【解决方案2】:

    你想要(in|out),你使用的[]表示一个包含字符'i','n','|','o','u','t'的字符类。

    【讨论】:

    • 你建议这样?:^(?P\w+(in|out))/$'
    • 请求:/status/in/ django 说:当前的 URL,/status/in/,不匹配任何这些。 ^(?P\w+(in|out))/$'
    • 好的,我想我需要更多的上下文。你有更高级别的 urls.py 吗?如果是这样,它是否将 /status/ 从前面剥离?如果没有,您可能想要 '^(?P\w+/(in|out))/$'
    • 欣赏这个解释。我完全忘记了这种区别。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-17
    • 2017-09-12
    • 2014-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多