1. 程式人生 > 程式設計 >解決Django中checkbox複選框的傳值問題

解決Django中checkbox複選框的傳值問題

Django 中,html 頁面通過 form 標籤來傳遞表單資料。

對於複選框資訊,即 checkbox 型別,點選 submit 後,資料將提交至 view 中的函式。

我們通過request.POST.get() 函式來獲取來自 html 頁面的值,但是該函式只能 get 到選中的最後一個值。

因此想要傳遞選中的多個值,需要用 request.POST.getlist() 函式

該函式返回一個列表,可通過迭代來獲取列表中每一項的值。

補充知識:解決checkbox複選框選中傳值,不選中不傳值的方案

解決checkbox複選框選中傳值,不選中不傳值的方案

問題描述:

一個form表單中的結構是這樣的:

解決Django中checkbox複選框的傳值問題

則頁面顯示結果是:

解決Django中checkbox複選框的傳值問題

如上填寫資料,經過序列化後的資料是:

[

{"id":"1","infoType":"11","infoName":"名稱1","fileIsOpen":"o"},{"id":"2","infoType":"12","infoName":"名稱2","fileIsOpen":"n"}

]

從資料中明顯看書fileIsOpen欄位的checkbox複選框選中則傳值是"o",未被選中則傳值是"n",其中這是錯誤的資料,因為被選中傳的值是on,也就是說checkbox複選框選中傳值,不選中不傳值。那麼怎麼解決不選中也傳值的問題呢?

解決方案:

我們可以設定隱藏域來代替checkbox複選框傳遞資料,具體的頁面修改如下:

解決Django中checkbox複選框的傳值問題

checkbox複選框對應的點選事件:

解決Django中checkbox複選框的傳值問題

再次輸入相同的資料傳遞的資料是:

[

{"id":"1","fileIsOpen":"0"},"infoType":"22","fileIsOpen":"1"}

]

從資料可以這次傳遞的資料是正確的

上述方案存在的問題

如果頁面什麼不傳遞,

解決Django中checkbox複選框的傳值問題

則傳遞的資料是這樣的:

[

{"fileIsOpen":"0"},{"fileIsOpen":"0"}

]

因此後臺在接受到資料後需要判斷List集合中的物件的必選要素,如果不包含必傳要素,就算傳入上述資料也是不錄入資料庫的資料,則可以捨去這些資料。

以上這篇解決Django中checkbox複選框的傳值問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。