解決Django中checkbox復(fù)選框的傳值問(wèn)題
Django 中,html 頁(yè)面通過(guò) form 標(biāo)簽來(lái)傳遞表單數(shù)據(jù)。
對(duì)于復(fù)選框信息,即 checkbox 類型,點(diǎn)擊 submit 后,數(shù)據(jù)將提交至 view 中的函數(shù)。
我們通過(guò)request.POST.get() 函數(shù)來(lái)獲取來(lái)自 html 頁(yè)面的值,但是該函數(shù)只能 get 到選中的最后一個(gè)值。
因此想要傳遞選中的多個(gè)值,需要用 request.POST.getlist() 函數(shù)
該函數(shù)返回一個(gè)列表,可通過(guò)迭代來(lái)獲取列表中每一項(xiàng)的值。
補(bǔ)充知識(shí):解決checkbox復(fù)選框選中傳值,不選中不傳值的方案
解決checkbox復(fù)選框選中傳值,不選中不傳值的方案
問(wèn)題描述:
一個(gè)form表單中的結(jié)構(gòu)是這樣的:

則頁(yè)面顯示結(jié)果是:

如上填寫數(shù)據(jù),經(jīng)過(guò)序列化后的數(shù)據(jù)是:
[{'id':'1','infoType':'11','infoName':'名稱1','fileIsOpen':'o'},{'id':'2','infoType':'12','infoName':'名稱2','fileIsOpen':'n'}]
從數(shù)據(jù)中明顯看書(shū)fileIsOpen字段的checkbox復(fù)選框選中則傳值是'o',未被選中則傳值是'n',其中這是錯(cuò)誤的數(shù)據(jù),因?yàn)楸贿x中傳的值是on,也就是說(shuō)checkbox復(fù)選框選中傳值,不選中不傳值。那么怎么解決不選中也傳值的問(wèn)題呢?
解決方案:
我們可以設(shè)置隱藏域來(lái)代替checkbox復(fù)選框傳遞數(shù)據(jù),具體的頁(yè)面修改如下:

checkbox復(fù)選框?qū)?yīng)的點(diǎn)擊事件:

再次輸入相同的數(shù)據(jù)傳遞的數(shù)據(jù)是:
[{'id':'1','infoType':'11','infoName':'名稱1','fileIsOpen':'0'},{'id':'2','infoType':'22','infoName':'名稱2','fileIsOpen':'1'}]
從數(shù)據(jù)可以這次傳遞的數(shù)據(jù)是正確的
上述方案存在的問(wèn)題
如果頁(yè)面什么不傳遞,

則傳遞的數(shù)據(jù)是這樣的:
[{'fileIsOpen':'0'},{'fileIsOpen':'0'}]
因此后臺(tái)在接受到數(shù)據(jù)后需要判斷List集合中的對(duì)象的必選要素,如果不包含必傳要素,就算傳入上述數(shù)據(jù)也是不錄入數(shù)據(jù)庫(kù)的數(shù)據(jù),則可以舍去這些數(shù)據(jù)。
以上這篇解決Django中checkbox復(fù)選框的傳值問(wèn)題就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. 理解PHP5中static和const關(guān)鍵字2. Java如何基于反射機(jī)制獲取不同的類3. Android table布局開(kāi)發(fā)實(shí)現(xiàn)簡(jiǎn)單計(jì)算器4. IntelliJ IDEA安裝插件的方法步驟5. python 代碼實(shí)現(xiàn)k-means聚類分析的思路(不使用現(xiàn)成聚類庫(kù))6. php模擬實(shí)現(xiàn)斗地主發(fā)牌7. asp判斷某個(gè)文件是否存在的函數(shù)8. Android 在 res/layout 文件夾 下創(chuàng)建一個(gè) 子文件夾實(shí)例9. PHP安全-命令注入10. Python random庫(kù)使用方法及異常處理方案

網(wǎng)公網(wǎng)安備