生成的表单元素处出现 MultiValueDictKeyError

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

这是我的表格:

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

问题是什么?

django django-forms
1个回答
1
投票

如果某个复选框选中,则它根本不是请求的一部分。因此,如果您勾选

answ2
answ4
,则
answ0
answ1
answ3
不会 成为请求的一部分。

您将看到:

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

复选框有点棘手,就像

date
输入一样。因此,通常至少使用 Django
Form
 [Django-doc]
来验证和清理输入。

© www.soinside.com 2019 - 2024. All rights reserved.