2010-02-24 21 views
39

Hai un URL che accetta un first_name e last_name in Django:Fare un Regex Django URL token opzionale

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

Come si includere il token URL OPTIONAL di title, senza creare nuove linee. Quello che voglio dire con questo è, in uno scenario ideale:

#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'), 

è possibile questo senza creare una nuova linea cioè

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

risposta

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

Non dimenticare di dare title un valore di default nel vista.

+0

grazie per quello. Come potrei creare un URL di JUST opzionale "titoli"? cioè '(?:/(? P [a-zA-Z] +))? (?:/(? P [a-zA-Z] +))?' Grazie per qualsiasi aiuto – Federer

+7

Nota che il? : è importante nel gruppo esterno. Senza di esso, l'URL funzionerà correttamente quando navigato, ma reverse() non noterà l'argomento all'interno. – Chris

+1

reverse fallisce per me utilizzando questo, creato 2 URL invece ... – radtek