1 回答

TA贡献1780条经验 获得超4个赞
如果是数字myyear序列,并且是非数字序列,则可以使用mycolor
urlpatterns = [
re_path(r'^products/((?P<my_color>\D+)/)?(?P<my_year>\d+)$', some_view),
]
如果或不存在,这将为相应元素传递一个空字符串。因此,您可以编写一个如下所示的视图:my_colormy_year
def some_view(request, my_color, my_year):
if my_color:
# …
if my_year:
# …
如果两者具有相同的字符序列,这是不可能的,因为您将如何解释products/bla?是bla颜色还是年份?
话虽这么说,我认为你把事情搞得太复杂了。您可以定义四种模式,例如:
urlpatterns = [
path(r'^products/', some_view),
path(r'^products/<int:year>/'),
path(r'^products/<str:color>/'),
path(r'^products/<str:color>/<int:year>/', some_view),
]
因此,您在这里为同一视图定义了四个视图。然后视图可以定义可选参数:
def some_view(request, color=None, year=None):
# …
添加回答
举报