我有以下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。
谢谢!
答案 0 :(得分:5)
答案显示在webapp2 docs for the request object:
中self.request.get('sports_played', allow_multiple=True)
或者你可以使用
self.request.POST.getall('sports_played')
答案 1 :(得分:1)
输入名称的末尾应带有[]
,以便将它们作为数组设置到服务器。现在,您的多个复选框将与具有相同名称的多个变量一样发送到服务器,因此只能识别一个。它应该看起来像这样:
<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>
现在,如果选择多个,则这些值将作为数组发送。
答案 2 :(得分:0)
虽然这个答案与这个问题无关,但它可能对所有走来走去的django开发人员有所帮助。
在 Django 中,request.POST
是一个 QueryDict
对象。所以你可以通过以下方式获取所有值作为列表
request.POST.getlist('sports_played')
注意:这只适用于 Django