解決Django中checkbox復(fù)選框的傳值問題
Django 中,html 頁面通過 form 標簽來傳遞表單數(shù)據(jù)。
對于復(fù)選框信息,即 checkbox 類型,點擊 submit 后,數(shù)據(jù)將提交至 view 中的函數(shù)。
我們通過request.POST.get() 函數(shù)來獲取來自 html 頁面的值,但是該函數(shù)只能 get 到選中的最后一個值。
因此想要傳遞選中的多個值,需要用 request.POST.getlist() 函數(shù)
該函數(shù)返回一個列表,可通過迭代來獲取列表中每一項的值。
補充知識:解決checkbox復(fù)選框選中傳值,不選中不傳值的方案
解決checkbox復(fù)選框選中傳值,不選中不傳值的方案
問題描述:
一個form表單中的結(jié)構(gòu)是這樣的:
則頁面顯示結(jié)果是:
如上填寫數(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復(fù)選框選中則傳值是'o',未被選中則傳值是'n',其中這是錯誤的數(shù)據(jù),因為被選中傳的值是on,也就是說checkbox復(fù)選框選中傳值,不選中不傳值。那么怎么解決不選中也傳值的問題呢?
解決方案:
我們可以設(shè)置隱藏域來代替checkbox復(fù)選框傳遞數(shù)據(jù),具體的頁面修改如下:
checkbox復(fù)選框?qū)?yīng)的點擊事件:
再次輸入相同的數(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復(fù)選框的傳值問題就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. Ajax?請求隊列解決方案并結(jié)合elementUi做全局加載狀態(tài)2. JSP實現(xiàn)彈出登陸框以及陰影效果3. 如何通過axios發(fā)起Ajax請求(最新推薦)4. jsp實現(xiàn)局部刷新頁面、異步加載頁面的方法5. Laravel?Eloquent的九個實用特性詳解6. 如何驗證我的系統(tǒng)是否安裝了 JavaFX runtime?7. JavaScript自定義插件實現(xiàn)tabs切換功能8. JavaScript之clipboard用法詳解9. Android實現(xiàn)下載進度條效果10. 如何使用IDEA新建一個普通的Javaweb項目
