2009-10-25 3 views
10

У меня есть веб-адрес:Использование Python регулярных выражений в Django

http://www.example.com/org/companyA

Я хочу, чтобы иметь возможность передавать CompanyA на вид с помощью регулярных выражений.

Это то, что у меня есть:

(r'^org/?P<company_name>\w+/$',"orgman.views.orgman") 

и он не совпадает.

В идеале все URL-адреса, похожие на example.com/org/X, передают x в представление.

Заранее благодарен!

ответ

19

Вам нужно обернуть имя группы в круглые скобки. Синтаксис для названных групп: (?P<name>regex), а не ?P<name>regex. Кроме того, если вы не хотите требовать конечную косую черту, вы должны сделать ее необязательной.

Это легко проверить регулярные выражения с интерпретатором Python, например:

>>> import re 
>>> re.match(r'^org/?P<company_name>\w+/$', 'org/companyA') 
>>> re.match(r'^org/(?P<company_name>\w+)/?$', 'org/companyA') 
<_sre.SRE_Match object at 0x10049c378> 
>>> re.match(r'^org/(?P<company_name>\w+)/?$', 'org/companyA').groupdict() 
{'company_name': 'companyA'} 
+0

Это является удивительным. Я искал что-то подобное в Интернете! –

1

Это должно выглядеть как r'^org/(?P<company_name>\w+)'

>>> r = re.compile(r'^org/(?P<company_name>\w+)') 
>>> r.match('org/companyA').groups() 
('companyA',) 
2

Ваше регулярное выражение не является действительным. Вероятно, это должно выглядеть так:

r'^org/(?P<company_name>\w+)/$' 
Смежные вопросы