2010-02-24 2 views
39

У вас есть URL, который принимает first_name и last_name в Django:Изготовление Regex Django URL Токен Необязательный

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

Как бы вы включить ФАКУЛЬТАТИВНУЮ URL маркер title, без создания каких-либо новых линий. То, что я имею в виду, что это, в идеальном сценарии:

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

Возможно ли это без создания новой линии, т.е.

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

ответ

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

Не забудьте дать title значение по умолчанию в Посмотреть.

+0

спасибо за это. Как я могу сделать URL-адрес JUST дополнительных '' титров''? т.е.: (?:/(? P [a-zA-Z] +))? (?:/(? P [a-zA-Z] +))? 'спасибо за любую помощь – Federer

+7

Обратите внимание, что? : важно во внешней группе. Без него URL-адрес будет работать правильно при навигации, но reverse() не будет видеть аргумент внутри. – Chris

+1

Обратный сбой для меня, используя это, вместо этого создал 2 URL ... – radtek