3

我有以下 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') 以防我需要更改我不想更改 python 的 HTML。

谢谢!

4

3 回答 3

7

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

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

或者,您可以使用

self.request.POST.getall('sports_played')
于 2013-09-11T19:31:54.753 回答
4

输入的名称应该[]放在最后,以便将它们作为数组设置到服务器。现在,您的多个复选框被发送到服务器,因为许多具有相同名称的变量,所以只有一个被识别。它应该如下所示:

<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>

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

于 2018-09-04T12:52:20.927 回答
1

虽然这个答案与这个问题无关,但它可能会对所有走来走去的django开发人员有所帮助。

Django request.POST中是一个QueryDict对象。因此,您可以通过以下方式获取所有值作为列表

request.POST.getlist('sports_played')

注意:这只适用于 Django

于 2021-04-29T18:28:50.650 回答