如果
myyear
是一串数字序列,而
mycolor
是一串非数字序列,你可以使用。
urlpatterns = [
re_path(r'^products/((?P<my_color><b>\D+</b>)/)?(?P<my_year><b>\d+</b>)$', some_view),
]
如果
my_color
或
my_year
不存在,那么这将为相应的元素传递一个
空字符串。 因此,您可以编写以下视图代码:
def some_view(request, my_color, my_year):
if my_color:
if my_year:
如果两个字符串完全相同,这是不可能的,比如
products/bla
,它到底代表颜色还是年份?
话虽如此,我认为你把它想得太复杂了。你可以定义四种模式,例如:
urlpatterns = [
path(r'^products/', some_view),
path(r'^products/<<b>int:</b>year>/'),
path(r'^products/<<b>str:</b>color>/'),
path(r'^products/<<b>str:</b>color>/<<b>int:</b>year>/', some_view),
]
在这里,您可以为同一个视图定义四个不同的视图,然后该视图可以定义可选参数:
def some_view(request, color<b>=None</b>, year<b>=None</b>):
/?my_color=a&my_year=b
这是唯一的方法了吗? - Oto Shavadze