【问题标题】:Checkboxes are not working in python web.py复选框在 python web.py 中不起作用
【发布时间】:2012-11-03 18:24:21
【问题描述】:

我正在使用 web.py 框架来创建小型网页。我有一个基本的 html,它有一个带有四个复选框字段的表单,如下所示

home.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 方法中,如我上面所示。

但结果我得到空字符串(无结果),如上所示,

谁能告诉我上面的代码有什么问题

还有如何获取选中的复选框的值?

【问题讨论】:

    标签: python checkbox web.py


    【解决方案1】:

    在 web.input() 返回的字典中存在复选框元素的名称表示该字段已被选中。否则,它不会出现在字典中。尝试检查表单上四个复选框的子集,我想你会明白我的意思。

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

    【讨论】:

    • :感谢您的回复,我想要的是它应该根据是否检查显示 TRUE 或 FALSE 的值。我们怎样才能做到这一点?
    • 您可以通过检查 web.input() 返回的字典中任何给定复选框的存在来获得显式 True 或 False 值的等价物。例如,与其查看 curly_1 是否像这样检查: if i['curly_1']: 这不起作用,因为 curly_1 仅在检查时才会出现,您可以使用如下逻辑: if 'curly_1' in i :因为如果选中了相应的复选框,所需的键只会出现在返回的字典中。
    • 是的,当然,但是我在某个地方看到了这些值(真或假),所以问我们如何在单击复选框时获得真或假值?还有其他方法吗?将值设置为 True 或 False,因为我正在设计一个显示数据库中所有记录的页面,现在用户可以通过选中复选框来选择一些适当的记录,然后单击检索按钮(创建一个仅包含已检查记录的 csv 文件)。所以我正在尝试的是当用户通过检查来选择记录时,我可以检查记录的值是否为真并检索该记录
    • 我不明白——如果你只是想要真/假值,你可以创建另一个字典,将同一组键映射到表示选中/未选中的布尔值。
    【解决方案2】:

    如果您只需要选中或未选中所有复选框值,则可以像处理 ajax 调用一样处理它。对于此更改输入类型提交到按钮。然后选中所有输入复选框并将其值填充到 json 中。然后它的值 rtrieve 你的控制器 post 方法。

    【讨论】:

    • :你能提供一个基于上述场景的ajax示例代码吗?这样我就可以很好地学习(我实际上不知道ajax :))
    • $("#submit").click(function(){ var curl1_val = $('input[name=curly_1]').is(':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', data:{action:'checkboxes',curly_1:curl1_val,curly_2:curl2_val,curly_3 :curl3_val,curly_4:curl4_val}, 成功: 函数(数据){ }, 错误:函数(数据){ alert("error"+data); } }); });您应该使用 web.input() 来获取这些值。
    猜你喜欢
    • 1970-01-01
    • 2012-11-05
    • 2019-10-13
    • 1970-01-01
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多