如何在web2py的post请求中有一个单选按钮数组

时间:2014-10-15 13:35:57

标签: python arrays post radio-button web2py

我有一些像这样的HTML:

<input type="radio" name="radiobutton[0]" value="1"><br>
<input type="radio" name="radiobutton[0]" value="2"><br>
<input type="radio" name="radiobutton[0]" value="3"><br>
<br>
<input type="radio" name="radiobutton[1]" value="1"><br>
<input type="radio" name="radiobutton[1]" value="2"><br>
<input type="radio" name="radiobutton[1]" value="3"><br>
<br>
<!-- ......... -->

我尝试在web2py中获取这样的数组:

request.post_vars.radiobutton == [1,2,2]

但是web2py一直这样给我:

request.post_vars
radiobutton [0] :1
radiobutton [1] :2
radiobutton [2] :2

我无法在python代码中直接使用它们。 request.post_vars.radiobutton返回Nonerequest.post_vars.radiobutton[0]会引发TypeError:('NoneType' object has no attribute '__getitem__')

name的{​​{1}}属性不能为<input type="radio" />,因为它会将所有按钮都设为一个。

我应该如何在web2py中使用单选按钮数组?

2 个答案:

答案 0 :(得分:2)

request.post_vars是一个Storage对象,它是一个类似字典的对象,允许通过属性或标准字典语法进行访问。所以,你可以这样做:

request.post_vars['radiobutton[0]']

或:

request.post_vars.get('radiobutton[0]')

答案 1 :(得分:1)

我猜你要做的事情是这样的:

在你的模块中:

def radioArrayExample( name, valuesList ):
    radios = []
    for v in valuesList:
        radios.append( INPUT(_type="radio", _name=name, _value=v) )
    return radios

在您的控制器中,您可以调用该功能:

import yourModule
def index():
    vals = [1, 2, 3]
    radios = yourModule.radioArrayExample( "exampleChoices", vals )

    return dict(radios = radios)

在FORM中使用“radios”时,您将能够通过request.vars.exampleChoices获得所需的值 尝试一下,我想这就是你要找的东西。