2012-04-18 67 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