2012-11-15 19 views
0

我使用web.py框架,用於創建小型Web pages.I了具有形式有四個複選框領域如下複選框不是用Python web.py工作

home.html的

一個基本的HTML
$def with () 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
<head> 
<title>Home</title> 
</head> 
<body> 
    <form method="POST" action="/checkboxes"> 
     <p>check_1  <input type="checkbox" id="curly_1" value="" name="curly_1"/></p> 
     <p>check_2  <input type="checkbox" id="curly_2" value="" name="curly_2"/></p> 
     <p>check_3  <input type="checkbox" id="curly_3" value="" name="curly_3"/></p> 
     <p>check_4  <input type="checkbox" id="curly_4" value="" name="curly_4"/></p>  
     <button id="submit" name="submit">Submit</button> 
    </form> 
</body> 
</html> 

index.py

import os 
import sys 
import web 
from web import form 

render = web.template.render('templates/') 


urls = (
    '/checkboxes', 'Checkboxes', 
) 
app = web.application(urls, globals()) 

class Checkboxes: 

    def POST(self): 
     i = web.input(groups = {}) 
     print i,">>>>>>>>>>>>" 
     raise web.seeother('/checkboxes') 

if __name__ == "__main__": 
    web.internalerror = web.debugerror 
    app.run() 

結果:

<Storage {'curly_3': u'', 'submit': u'', 'curly_4': u'', 'curly_1': u'', 'groups': [], 'curly_2': u''}> >>>>>>>>>>>> 

於是從HTML視圖我可以看到四個checkbox領域,我已經檢查了所有的複選框並單擊提交按鈕,現在應該來Checkboxes類,並應打印輸入(複選框是結果檢查)在post方法中,如上所示。

但結果我得到如上圖所示,

任何人都可以請讓我知道什麼是錯在上面的代碼

怎麼也碰到一些複選框的值空字符串(無結果)選擇?

回答

1

web.input()返回的字典中存在複選框元素的名稱,表示該字段已被選中。否則,它不會出現在字典中。嘗試檢查表單上四個複選框的子集,我想你會明白我的意思。

更多細節:https://groups.google.com/forum/#!searchin/webpy/checkbox/webpy/PVBdPv7kGDM/IqgLptUEN-EJ

+0

:感謝您的回覆,我想要的是它應該根據是否選中顯示真或假的值。我們怎樣才能做到這一點? –

+0

通過檢查web.input()返回的字典中是否存在任何給定的複選框,您可以獲得顯式True或False值的等效值。例如,而不是看看是否curly_1被選中這樣的: 如果我[「curly_1」]: 這將無法工作,因爲檢查,只有當curly_1將出席,你可以用這樣的邏輯: 如果i中的'curly_1': ,因爲如果相應的複選框被選中,所需的鍵只會出現在返回的字典中。 –

+0

當然是,但在某處我已經看到了這些值(True或False),所以詢問我們如何在單擊複選框時可以得到True或False值?是否有任何其他方式將值設置爲True或False ,因爲我正在設計一個顯示數據庫中所有記錄的頁面,現在用戶可以通過選中複選框來選擇一些合適的記錄,並單擊「檢索」按鈕(這將創建一個只有選中記錄的csv文件)。因此,我正在嘗試是當用戶通過選中記錄來選擇記錄時,我可以檢查記錄的值是否爲真,並檢索該記錄 –

1

如果你需要簡單地所有複選框值選中或取消選中,你可以處理它像一個Ajax調用。對於此更改輸入類型提交到按鈕。然後將所有輸入複選框選中或不填,並將其值填入json。那麼它的價值就是你的控制器後期方法。

+0

:你能否提供一個基於上述場景的ajax示例代碼?(我不知道ajax :) :) –

+0

$(「#submit」)。click(function(){varging_lumber = $('input [name = curly_1]')。 (':checked'); var curl2_val = $('input [name = curly_2]')。is(':checked'); var curl3_val = $('input [name = curly_3]')。is ':checked'); var curl4_val = $('input [name = curly_4]')。is(':checked'); $ .ajax({url:'/ checkboxes',type:'POST', 數據:{動作: '複選框',curly_1:curl1_val,curly_2:curl2_val,curly_3:curl3_val,curly_4:curl4_val}, 成功:功能(數據){ }, 錯誤:功能(數據){ 警報(」錯誤「+數據); } }); \t }); \t 您應該通過使用web.input()來獲取這些值。 –