解決Django中checkbox復選框的傳值問題
Django 中,html 頁面通過 form 標簽來傳遞表單數(shù)據(jù)。
對于復選框信息,即 checkbox 類型,點擊 submit 后,數(shù)據(jù)將提交至 view 中的函數(shù)。
我們通過request.POST.get() 函數(shù)來獲取來自 html 頁面的值,但是該函數(shù)只能 get 到選中的最后一個值。
因此想要傳遞選中的多個值,需要用 request.POST.getlist() 函數(shù)
該函數(shù)返回一個列表,可通過迭代來獲取列表中每一項的值。
補充知識:解決checkbox復選框選中傳值,不選中不傳值的方案
解決checkbox復選框選中傳值,不選中不傳值的方案
問題描述:
一個form表單中的結構是這樣的:
則頁面顯示結果是:
如上填寫數(shù)據(jù),經(jīng)過序列化后的數(shù)據(jù)是:
[ {"id":"1","infoType":"11","infoName":"名稱1","fileIsOpen":"o"}, {"id":"2","infoType":"12","infoName":"名稱2","fileIsOpen":"n"} ]
從數(shù)據(jù)中明顯看書fileIsOpen字段的checkbox復選框選中則傳值是"o",未被選中則傳值是"n",其中這是錯誤的數(shù)據(jù),因為被選中傳的值是on,也就是說checkbox復選框選中傳值,不選中不傳值。那么怎么解決不選中也傳值的問題呢?
解決方案:
我們可以設置隱藏域來代替checkbox復選框傳遞數(shù)據(jù),具體的頁面修改如下:
checkbox復選框對應的點擊事件:
再次輸入相同的數(shù)據(jù)傳遞的數(shù)據(jù)是:
[ {"id":"1","infoType":"11","infoName":"名稱1","fileIsOpen":"0"}, {"id":"2","infoType":"22","infoName":"名稱2","fileIsOpen":"1"} ]
從數(shù)據(jù)可以這次傳遞的數(shù)據(jù)是正確的
上述方案存在的問題
如果頁面什么不傳遞,
則傳遞的數(shù)據(jù)是這樣的:
[ {"fileIsOpen":"0"}, {"fileIsOpen":"0"} ]
因此后臺在接受到數(shù)據(jù)后需要判斷List集合中的對象的必選要素,如果不包含必傳要素,就算傳入上述數(shù)據(jù)也是不錄入數(shù)據(jù)庫的數(shù)據(jù),則可以舍去這些數(shù)據(jù)。
以上這篇解決Django中checkbox復選框的傳值問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關文章
Python使用ffmpeg合成視頻、音頻的實現(xiàn)方法
這篇文章主要介紹了Python使用ffmpeg合成視頻、音頻,通過本文的學習能幫助大家了解如何在python中調用ffmpeg模塊,對此進行音視頻合并,完成視頻合成,需要的朋友可以參考下2022-04-04Python內(nèi)置數(shù)據(jù)類型list各方法的性能測試過程解析
這篇文章主要介紹了Python內(nèi)置數(shù)據(jù)類型list各方法的性能測試過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-01-01Django項目配置連接多個數(shù)據(jù)庫的方法記錄
最近在進行django項目開發(fā)的時候,遇到了需要連接兩個MySQL數(shù)據(jù)庫的問題,下面這篇文章主要給大家介紹了關于Django項目配置連接多個數(shù)據(jù)庫的相關資料,需要的朋友可以參考下2022-05-05基于python實現(xiàn)垂直爬蟲系統(tǒng)的方法詳解
這篇文章主要為大家詳細介紹了python實現(xiàn)垂直爬蟲系統(tǒng)的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03