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):
# …
添加回答
舉報