Ответ 1
('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)(?:/(?P<title>[a-zA-Z]+))?/$','some_method'),
Не забудьте указать title
значение по умолчанию в представлении.
У вас есть URL-адрес, который принимает first_name
и last_name
в Django:
('^(?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'),
Возможно ли это, не создавая новую строку i.e.
('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)/(?P<title>[a-zA-Z]+)/$','some_method'),
('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)(?:/(?P<title>[a-zA-Z]+))?/$','some_method'),
Не забудьте указать title
значение по умолчанию в представлении.
Если вы ищете несколько необязательных аргументов, без каких-либо обязательных, просто опустите "/" в начале, например:
re_path(r'^view(?:/(?P<dummy1>[a-zA-Z]+))?(?:/(?P<dummy2>[a-zA-Z]+))?(?:/(?P<dummy3>[a-zA-Z]+))?/$', views.MyView.as_view(), name='myname'),
которую вы можете просмотреть по адресу:
http://localhost:8000/view/?dummy1=value1&dummy2=value2&dummy3=value3