2012-04-18 63 views
-3

如何理解例如URL的Url模式。 (?P<slug>[-\w]+)/$在Django url.py如何理解django中的Url模式url.py

+2

我很想推荐[手动](https://docs.djangoproject.com/zh/dev/topics/http/urls/)。 – 2012-04-18 05:02:53

+0

这是一个正则表达式。阅读http://docs.python.org/library/re.html以了解更多信息。 – agf 2012-04-18 05:15:00

回答

0
+2

不要只发布链接作为答案。请添加详细信息/示例或将其作为评论发布。 – agf 2012-04-18 05:15:48

+0

我完全同意agf,即使Gopi的问题不明智。正则表达式是一个巨大的领域,只是一个链接不起作用。 – Timo 2014-06-01 05:39:11

0

注意,一决高下领域可能还包括数字(不只是字母和破折号),所以要改变它这样说:

SLUG = '(?P<slug>[\w\d-]+)' 

我希望这对您有所帮助......

+0

这不回答问题。他在问如何解释它们,而不是如何改变它们来做某件事。 – agf 2012-04-18 05:16:22

4

这个网址:(?P<slug>[-\w]+)/$

说,你是传递一个变量,你叫slug可以是任何数字或字母和-

你的观点的看法是这样的:

def my_view(request, slug): 
    .... 

希望它可以帮助...

+0

这并不能解释那些“数字或字母”来自何处。 – agf 2012-04-18 05:21:30

+0

谢谢你的答复。 – 2012-04-18 10:35:06

0

我想它不是一个有效的正则表达式模式。 “[ - \ w] +”会得到“单词和 - ”,类似于“a-b9-c-”或“---” (?P ...)是“命名组”。如果你不给它的名字,python(我的是2.7)会引发错误。

>>> m = re.match("(?P<e>[-\w]+)/$", "a-b-c-/") 
>>> m.group('e') 
'a-b-c-' 
>>> m = re.match("(?P[-\w]+)/$", "a-b-c-/") 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
    File "/usr/lib/python2.7/re.py", line 137, in match 
    return _compile(pattern, flags).match(string) 
    File "/usr/lib/python2.7/re.py", line 244, in _compile 
    raise error, v # invalid expression 
sre_constants.error: unknown specifier: ?P[ 
+0

谢谢你的答复。 – 2012-04-18 10:35:24

+0

但它有指定的组。它*是*有效的。 (我认为你在看这个非转义版本,在你发布这个版本之前,我已经修正了四分之三个小时。) – 2012-04-19 05:05:13