html 使用单个服务器端变量处理多个复选框

dxxyhpgq  于 2022-12-16  发布在  其他
关注(0)|答案(4)|浏览(100)

我有下面的HTML代码:

<form method="post">
              <h5>Sports you play:</h5>
                <input type="checkbox" name="sports_played" value="basketball"> basketball<br>
                <input type="checkbox" name="sports_played" value="football"> football<br>
                <input type="checkbox" name="sports_played" value="baseball"> baseball<br>
                <input type="checkbox" name="sports_played" value="soccer"> tennis<br>
                <input type="checkbox" name="sports_played" value="mma"> MMA<br>
                <input type="checkbox" name="sports_played" value="hockey"> hockey<br>

                <br> 

                    <input class="btn" type="submit">

</form>

理想情况下,我希望有以下python服务器端代码:

class MyHandler(ParentHandler):
    def post(self):
        sports_played = self.request.get('sports_played')
        #sports_played is a list or array of all the selected checkboxes that I can iterate through

我尝试通过创建HTML sports_played名称和数组sports_played[]来实现这一点,但这没有任何作用,现在它总是返回第一个选中的项目。
这可能吗?真的,我只是不想为每一个复选框做self.request.get('HTML_item'),以防我需要改变HTML,我不想改变python。
谢谢!

tag5nh1u

tag5nh1u1#

答案显示在请求对象的webapp2文档中:

self.request.get('sports_played', allow_multiple=True)

或者,您可以使用

self.request.POST.getall('sports_played')
hxzsmxv2

hxzsmxv22#

输入的名称应该以[]结尾,这样它们就可以作为数组设置到服务器。现在,您的多个复选框将作为许多同名变量发送到服务器,因此只有一个变量被识别。它应该如下所示:

<form method="post">
              <h5>Sports you play:</h5>
                <input type="checkbox" name="sports_played[]" value="basketball"> basketball<br>
                <input type="checkbox" name="sports_played[]" value="football"> football<br>
                <input type="checkbox" name="sports_played[]" value="baseball"> baseball<br>
                <input type="checkbox" name="sports_played[]" value="soccer"> tennis<br>
                <input type="checkbox" name="sports_played[]" value="mma"> MMA<br>
                <input type="checkbox" name="sports_played[]" value="hockey"> hockey<br>

                <br> 

                    <input class="btn" type="submit">

</form>

现在,如果您选择多个值,这些值将作为数组发送。

ctehm74n

ctehm74n3#

虽然这个答案与这个问题无关,但它可能会帮助所有到处走动的django开发人员。
Djangorequest.POST是一个QueryDict对象。所以你可以通过下面的方法得到所有的值

request.POST.getlist('sports_played')

N.B:这只适用于Django

inkz8wg9

inkz8wg94#

这不是原始问题的答案,但Flask开发人员可能会发现它很有帮助。
培养瓶中,您可以使用request.getlist()方法:

request.getlist('sports_played')

相关问题