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

Oli*_*own 2 python django python-3.x twitter-bootstrap bootstrap-4

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

索引.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> 
Run Code Online (Sandbox Code Playgroud)

查看.py

if request.method == 'POST':
    fruit = []
    fruit.append(request.POST.get('apple'))
    fruit.append(request.POST.get('mango'))
Run Code Online (Sandbox Code Playgroud)

Vit*_*tas 9

正如 Daniel 所提到的,您必须为name表单元素添加一个属性,以便将它们提交给服务器。

索引.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>
Run Code Online (Sandbox Code Playgroud)

这样,您可以在视图中获得水果列表:

视图.py

if request.method == 'POST':
    fruits = request.POST.getlist('fruits')
Run Code Online (Sandbox Code Playgroud)

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

['Apple', 'Mango']
Run Code Online (Sandbox Code Playgroud)

  • 当复选框也设置了“checked”属性时如何处理?在这种情况下,“fruits”的值似乎将是:“['on', 'on']”,并且没有指示选择了哪些水果。 (4认同)