Domanda

Ho un indirizzo web:

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

Voglio essere in grado di passare CompanyA ad una vista usando espressioni regolari.

Questo è quello che ho:

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

e non corrisponde.

Idealmente tutti gli URL che assomigliano a example.com/org/X passerebbero x alla vista.

Grazie in anticipo!

È stato utile?

Soluzione

Devi racchiudere il nome del gruppo tra parentesi. La sintassi per i gruppi con nome è (?P<name>regex), non ?P<name>regex. Inoltre, se non si desidera richiedere una barra finale, è necessario renderla facoltativa.

È facile testare la corrispondenza delle espressioni regolari con l'interprete Python, ad esempio:

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

Altri suggerimenti

Il tuo regex non è valido. Probabilmente dovrebbe apparire come

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

Dovrebbe assomigliare di più a r'^org/(?P<company_name>\w+)'

>>> r = re.compile(r'^org/(?P<company_name>\w+)')
>>> r.match('org/companyA').groups()
('companyA',)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top