这是我的表格:
<form action="" method="POST"> {% csrf_token %}
<div class="col-4"> <input type="text" name="ad" placeholder="İsim">
{% for question in model.get_questions %}
<div class="question col-6">
<div class="header"> {{ question }} <input type="checkbox" name="answ{{forloop.counter0}}">
</div>
</div>
{% endfor %}
<input type="submit" value="Gönder">
</form>
当我尝试在视图中获得
request.POST['ad']
时,它非常有效,但是当我尝试像answ0
那样时,它不起作用。当我打印 request.POST
时也不会出现。这是我收到的错误:
MultiValueDictKeyError at /form/1
'answ0'
问题是什么?
如果某个复选框未选中,则它根本不是请求的一部分。因此,如果您勾选
answ2
和 answ4
,则 answ0
、answ1
和 answ3
将不会 成为请求的一部分。
您将看到:
if 'answ0' in request.POST:
pass # 🖘 checked
else:
pass # 🖘 not checked
复选框有点棘手,就像
date
输入一样。因此,通常至少使用 Django Form
[Django-doc] 来验证和清理输入。