您有一个在Django中接受first_name
和last_name
的URL:
('^(?P<first_name>[a-zA-Z]+)/(?P<last_name>[a-zA-Z]+)/$','some_method'),
您将如何包含title
的可选URL令牌,而不创建任何新行。我的意思是,在理想情况下:
#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'),
('^(?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