2012-04-18 1 views
-3

Как понять шаблоны Url, например. (?P<slug>[-\w]+)/$ в Джанго url.pyКак понять шаблоны Url в django url.py

+2

Я был соблазн просто рекомендовать [руководство] (https://docs.djangoproject.com/en/dev/topics/http/urls/). –

+0

Это регулярное выражение. Читайте в http://docs.python.org/library/re.html, чтобы понять больше. – agf

ответ

0
+2

Не публикуйте ссылки только как ответы. Либо добавьте детали/примеры, либо опубликуйте их как комментарий. – agf

+0

Я полностью согласен с agf, хотя вопрос о Гопи не был разумным. Регулярные выражения - это огромное поле, где просто ссылка не помогает. – Timo

0

Обратите внимание, что Slug поля могут также включать в себя цифры (а не только буквы и тире), так что вы хотите изменить его, чтобы сказать что-то вроде:

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

Я надеюсь, что это полезно для вас ...

+0

Это не отвечает на вопрос. Он спрашивал, как их интерпретировать, а не как изменить их, чтобы что-то сделать. – agf

4

Этот URL: (?P<slug>[-\w]+)/$

Говорит, что вы передаете переменную ваш взгляд называется slug может быть любые цифры или буквы и -

Ваше мнение, как это:

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

надеюсь, что это помогает ...

+0

Это не объясняет, откуда берутся эти цифры или буквы. – agf

+0

Спасибо за ваш ответ. –

0

Я думаю, это не действительный шаблон регулярного выражения. "[- \ w] +" получит слово и - ", что-то вроде" a-b9-c- "или" --- " (? P ...) - это« Именованная группа ». Если вы не укажете его имя, python (my is 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

Спасибо за ваш ответ. –

+0

Но он имеет указанную группу. Он * * действителен. (Я полагаю, вы смотрели на неэкспериментированную версию, которую я исправил за три четверти часа до того, как вы разместили это.) –