正则表达式 django 网址

Posted

技术标签:

【中文标题】正则表达式 django 网址【英文标题】:Regex django url 【发布时间】:2014-01-20 05:39:50 【问题描述】:

您好,我有一个 url,我想匹配 uuid 网址如下所示:

/mobile/mobile-thing/68f8ffbb-b715-46fb-90f8-b474d9c57134/

urlpatterns = patterns("mobile.views",
    url(r'^$', 'something_cool', name='cool'),
    url(r'^mobile-thing/(?P<uuid>[.*/])$', 'mobile_thing', name='mobile-thinger'),
)

但这根本不起作用。我的相应视图没有被调用。我测试了很多变化...

url(r'^mobile-thing/', 'mobile_thing', name='mobile-thinger') 的作用就像一个魅力,但没有群体......

【问题讨论】:

【参考方案1】:

[.*/] 表达式只匹配 一个 字符,可以是.*/。您需要改写(这只是众多选项之一):

urlpatterns = patterns("mobile.views",
    url(r'^$', 'something_cool', name='cool'),
    url(r'^mobile-thing/(?P<uuid>[^/]+)/$', 'mobile_thing', name='mobile-thinger'),
)

这里,[^/] 代表除/ 之外的任何字符,并且紧随其后的+ 匹配此类字符一次或多次。您不希望最终的 / 出现在 uuid 变量中,因此请将其放在括号外。

【讨论】:

非常感谢...这不会调用我的视图函数...我也尝试了很多变体...这个网址包含在另一个网址中会不会是个问题? 如何包含在内?显示该代码。问题几乎肯定存在。【参考方案2】:

试试这个正则表达式:

\/mobile-thing\/(?P<uuid>.*)\/$

应该是这样的:

urlpatterns = patterns("mobile.views",
    url(r'^$', 'something_cool', name='cool'),
    url(r'\/mobile-thing\/(?P<uuid>.*)\/$', 'mobile_thing', name='mobile-thinger'),
)

【讨论】:

谢谢..我没说正则表达式在包含的 url 中...这很重要吗? ".*" 是所有字符,当它不是结束字符时将包括“/”。所以 "/asdffadd/asdfdfsadf/" = "asdffadd/asdfdfsadf"

以上是关于正则表达式 django 网址的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 中使用 Python 正则表达式

django url 正则表达式不匹配

django 在列表中使用正则表达式排除 url

django url 正则表达式匹配可选参数

Django url正则表达式匹配但找不到页面错误

Django:如何访问中间件类中的 URL 正则表达式参数?