解決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é)果是:
如上填寫(xiě)數(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è)參考,也希望大家多多支持腳本之家。
相關(guān)文章
python Pandas庫(kù)基礎(chǔ)分析之時(shí)間序列的處理詳解
這篇文章主要介紹了python Pandas庫(kù)基礎(chǔ)分析之時(shí)間序列的處理詳解,Pandas作為Python環(huán)境下的數(shù)據(jù)分析庫(kù),更是提供了強(qiáng)大的日期數(shù)據(jù)處理的功能,是處理時(shí)間序列的利器,需要的朋友可以參考下2019-07-07Python使用ffmpeg合成視頻、音頻的實(shí)現(xiàn)方法
這篇文章主要介紹了Python使用ffmpeg合成視頻、音頻,通過(guò)本文的學(xué)習(xí)能幫助大家了解如何在python中調(diào)用ffmpeg模塊,對(duì)此進(jìn)行音視頻合并,完成視頻合成,需要的朋友可以參考下2022-04-04Python內(nèi)置數(shù)據(jù)類型list各方法的性能測(cè)試過(guò)程解析
這篇文章主要介紹了Python內(nèi)置數(shù)據(jù)類型list各方法的性能測(cè)試過(guò)程解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-01-01在Python 中實(shí)現(xiàn)圖片加框和加字的方法
今天小編就為大家分享一篇在Python 中實(shí)現(xiàn)圖片加框和加字的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-01-01Django項(xiàng)目配置連接多個(gè)數(shù)據(jù)庫(kù)的方法記錄
最近在進(jìn)行django項(xiàng)目開(kāi)發(fā)的時(shí)候,遇到了需要連接兩個(gè)MySQL數(shù)據(jù)庫(kù)的問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于Django項(xiàng)目配置連接多個(gè)數(shù)據(jù)庫(kù)的相關(guān)資料,需要的朋友可以參考下2022-05-05python登錄QQ郵箱發(fā)信的實(shí)現(xiàn)代碼
python登錄QQ郵箱發(fā)信的代碼,有需要的朋友可以參考下2013-02-02基于python實(shí)現(xiàn)垂直爬蟲(chóng)系統(tǒng)的方法詳解
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)垂直爬蟲(chóng)系統(tǒng)的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2022-03-03LyScript實(shí)現(xiàn)指令查詢功能的示例代碼
對(duì)LyScript自動(dòng)化插件進(jìn)行二次封裝,可以實(shí)現(xiàn)從內(nèi)存中讀入目標(biāo)進(jìn)程解碼后的機(jī)器碼。所以本文為大家介紹了如何實(shí)現(xiàn)LyScript指令查詢功能,需要的可以參考一下2022-09-09