如何在 django 应用程序中获取复选框值

问题描述 投票:0回答:3

我正在尝试在简单的

django
应用程序中使用复选框控件。代码逻辑似乎没问题,但我得到一个空的
fruit
列表 (
[None, None]
)。我不知道为什么它不起作用,任何人都可以指出错误。预先感谢

index.html

<div class="form-check">
<input class="form-check-input" type="checkbox" value="Apple" id="apple">
<label class="form-check-label" for="apple">Apple</label>
</div>
<div class="form-check">
<input class="form-check-input" type="checkbox" value="Mango" id="mango">
<label class="form-check-label" for="mango">Mango</label>
</div> 

view.py

if request.method == 'POST':
    fruit = []
    fruit.append(request.POST.get('apple'))
    fruit.append(request.POST.get('mango'))
python django twitter-bootstrap python-3.x bootstrap-4
3个回答
12
投票

正如 Daniel 提到的,您必须为表单元素添加

name
属性,以便将它们提交到服务器。

index.html

<form method="post">
  {% csrf_token %}
  <div class="form-check">
    <input class="form-check-input" type="checkbox" value="Apple" id="apple" name="fruits">
    <label class="form-check-label" for="apple">Apple</label>
  </div>
  <div class="form-check">
    <input class="form-check-input" type="checkbox" value="Mango" id="mango" name="fruits">
    <label class="form-check-label" for="mango">Mango</label>
  </div>
  <button type="submit">Submit</button>
</form>

这样,你就可以得到你视图中的水果列表了:

views.py

if request.method == 'POST':
    fruits = request.POST.getlist('fruits')

fruits
变量将是检查输入的列表。例如:

['Apple', 'Mango']

1
投票

input
元素需要一个
name
属性,否则浏览器不会发送任何数据。


0
投票

我在帖子如何在 Django 中获取 POST 请求值中找到了此问题的解决方案。

您认为

request.POST.getlist('fruits')
的结果

会回来

['on', 'on']

要获取所选水果的名称,请使用

request.POST.getlist('student', '')

从输入标签中定位 value="name"
© www.soinside.com 2019 - 2024. All rights reserved.