我正在尝试在简单的
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'))
正如 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']
input
元素需要一个name
属性,否则浏览器不会发送任何数据。
我在帖子如何在 Django 中获取 POST 请求值中找到了此问题的解决方案。
您认为
request.POST.getlist('fruits')
的结果
会回来
['on', 'on']
要获取所选水果的名称,请使用
request.POST.getlist('student', '')
从输入标签中定位 value="name"