django 生成表单元素时发生MultiValueDictKeyError

cdmah0mi  于 2023-11-20  发布在  Go
关注(0)|答案(1)|浏览(132)

这是我的表格:

<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'


问题出在哪里?

8fq7wneg

8fq7wneg1#

如果一个复选框没有被选中,它就不是请求的一部分。所以如果你勾选answ2answ4,那么answ0answ1answ3就不是请求的一部分。
因此,您将看到:

if 'answ0' in request.POST:
    pass  # 🖘 checked
else:
    pass  # 🖘 not checked

字符串
复选框有点棘手,就像date输入一样。因此,Django Form [Django-doc]通常至少用于验证和清理输入。

相关问题