Pregunta

Tengo una dirección web:

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

Quiero poder pasar CompanyA a una vista usando expresiones regulares.

Esto es lo que tengo:

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

y no coincide.

Idealmente, todas las URL que se vean como example.com/org/X pasarían x a la vista.

¡Gracias de antemano!

¿Fue útil?

Solución

Debe ajustar el nombre del grupo entre paréntesis. La sintaxis para los grupos con nombre es (?P<name>regex), no ?P<name>regex. Además, si no desea requerir una barra inclinada final, debe hacerlo opcional.

Es fácil probar la coincidencia de expresiones regulares con el intérprete de Python, por ejemplo:

>>> 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'}

Otros consejos

Su expresión regular no es válida. Probablemente debería verse como

r'^org/(?P<company_name>\w+)/$'

Debería verse más como r'^org/(?P<company_name>\w+)'

>>> r = re.compile(r'^org/(?P<company_name>\w+)')
>>> r.match('org/companyA').groups()
('companyA',)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top