Mit Python Regular Expression in Django
-
06-07-2019 - |
Frage
Ich habe eine Web-Adresse:
http://www.example.com/org/companyA
Ich möchte in der Lage sein CompanyA zu einer Ansicht mit regulären Ausdrücken zu übergeben.
Das ist, was ich habe:
(r'^org/?P<company_name>\w+/$',"orgman.views.orgman")
und es stimmt nicht überein.
Im Idealfall ist alles URL, die wie example.com/org/X aussehen x zu der Ansicht passieren würde.
Vielen Dank im Voraus!
Lösung
Sie müssen die Gruppennamen in Klammern wickeln. Die Syntax für benannte Gruppen ist (?P<name>regex)
, nicht ?P<name>regex
. Auch wenn Sie keinen Schrägstrich erfordern mögen, sollten Sie es optional machen.
Es ist einfach für reguläre Ausdrücke zu testen, mit dem Python-Interpreter passenden, zum Beispiel:
>>> 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'}
Andere Tipps
Ihre regex ist nicht gültig. Es sollte wohl aussehen
r'^org/(?P<company_name>\w+)/$'
Es sollte eher wie r'^org/(?P<company_name>\w+)'
aussehen
>>> r = re.compile(r'^org/(?P<company_name>\w+)')
>>> r.match('org/companyA').groups()
('companyA',)