2010-02-24 16 views
39

Usted tiene una dirección URL que acepta una first_name y last_name en Django:Hacer una expresión regular Django URL de emergencia opcional

('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)/$','some_method'), 

¿Cómo incluir el token URL opcional de title, sin crear nuevas líneas. Lo que quiero decir con esto es, en un escenario ideal:

#A regex constant 
OP_REGEX = r'THIS IS OPTIONAL<title>[a-z]' 
#Ideal URL 
('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)/OP_REGEX/$','some_method'), 

¿Es esto posible sin la creación de una nueva línea, es decir

('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)/(?P<title>[a-zA-Z]+)/$','some_method'), 

Respuesta

68
('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)(?:/(?P<title>[a-zA-Z]+))?/$','some_method'), 

No se olvide de dar title un valor por defecto en el ver.

+0

gracias por eso. ¿Cómo crearía una URL de JUSTOS '' títulos '' opcionales? es decir '(?:/(? P [a-zA-Z] +))? (?:/(? P [a-zA-Z] +))?' gracias por cualquier ayuda – Federer

+7

Tenga en cuenta que? : es importante en el grupo externo. Sin él, la URL funcionará correctamente cuando se navegue a, pero reverse() no notará el argumento dentro. – Chris

+1

falla inversa para mí al usar esto, creó 2 URL en su lugar ... – radtek

Cuestiones relacionadas