2009-10-25 12 views
10

Ich habe eine Web-Adresse:Mit Python Regular Expression in Django

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

ich CompanyA zu einer Ansicht passieren mit regulären Ausdrücken in der Lage sein wollen. Diese

ist, was ich habe:

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

und es stimmt nicht überein.

Ideal der alle URL, die wie example.com/org/X aussehen würde x auf die Ansicht übergeben.

Vielen Dank im Voraus!

Antwort

19

Sie müssen den Gruppennamen in Klammern umbrechen. Die Syntax für benannte Gruppen lautet (?P<name>regex), nicht ?P<name>regex. Wenn Sie keinen Schrägstrich benötigen, sollten Sie dies 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'} 
+0

Das ist genial. Ich habe so etwas online gesucht! –

1

Es sollte mehr aussehen wie r'^org/(?P<company_name>\w+)'

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

Ihre regex nicht gültig ist. Es sollte wahrscheinlich so aussehen:

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