Использование регулярного выражения Python в Django
У меня есть веб-адрес:
http://www.example.com/org/companyA
Я хочу, чтобы иметь возможность передать CompanyA в представление, используя регулярные выражения.
Это то, что у меня есть:
(r'^org/?P<company_name>\w+/$',"orgman.views.orgman")
и не соответствует.
В идеале весь URL-адрес, похожий на example.com/org/X, будет передавать x в представление.
Спасибо заранее!
Ответы
Ответ 1
Вам нужно обернуть имя группы в круглые скобки. Синтаксис для названных групп: (?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'}
Ответ 2
Ваше регулярное выражение недействительно. Вероятно, он должен выглядеть как
r'^org/(?P<company_name>\w+)/$'
Ответ 3
Он должен больше походить на r'^org/(?P<company_name>\w+)'
>>> r = re.compile(r'^org/(?P<company_name>\w+)')
>>> r.match('org/companyA').groups()
('companyA',)