Making a Regex Django URL Token Optional

Solution 1:

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

Don't forget to give title a default value in the view.

Solution 2:

In case your are looking for multiple optional arguments, without any required ones, just omit "/" at the beginning, such as:

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

which you can browse at:

http://localhost:8000/view/?dummy1=value1&dummy2=value2&dummy3=value3