您有一个在Django中接受first_name
和last_name
的网址:
('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)/$','some_method'),
如何在不创建任何新行的情况下包含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'),
答案 0 :(得分:76)
('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)(?:/(?P<title>[a-zA-Z]+))?/$','some_method'),
不要忘记在视图中为title
提供默认值。
答案 1 :(得分:0)
如果您要查找多个可选参数,而没有任何必需参数,则只需在开头省略“ /”,例如:
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