亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 django 中傳遞多個可選 URL 參數?

如何在 django 中傳遞多個可選 URL 參數?

侃侃爾雅 2023-10-11 09:54:51
如何傳遞多個可選的 URL 參數?例如,我想傳遞 2 個參數:my_color和my_year,但它們是可選的,因此可能不會傳遞它們中的任何一個,也可能兩者都傳遞,或者可能只有一個。目前urls.py我有:urlpatterns = [     re_path(r'^products/(?P<my_color>.*)/(?P<my_year>.*)$', some_view), ]這顯然是不正確的,只有當它們都通過時才有效。什么是正確的解決方案?PS 當只需要傳遞一個可選參數時,我找到了答案,但不知道如何對少數參數執行相同的操作。在這種情況下,“多路線選項”似乎也不是解決方案(?)
查看完整描述

1 回答

?
Helenr

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):

    # …


查看完整回答
反對 回復 2023-10-11
  • 1 回答
  • 0 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號