我希望创建一个带复选框的Django表单。无论天气如何我检查或取消选中该框,在POST请求中都没有检测到。这是模板的代码 -
<form action="annotate_page" method="post">{% csrf_token %}
<input id="repeat" type="checkbox" >
<label for="repeat">Repeat Sentence?</label>
<br>
<button type="submit">Next</button><br>
</form>
这是我的forms.py -
from django import forms
class AnnotateForm(forms.Form):
repeat=forms.BooleanField(required=False)
这是我的观点逻辑 -
if request.method=="POST":
form = AnnotateForm(request.POST)
if form.is_valid():
print(request.POST)#prints only csrf_token in Query_dict
print(form.cleaned_data["repeat"])#Always false
无论天气如何,选中或不选中复选框,print语句总是给出False。
我知道有类似的问题,但他们没有解决我的问题。
答案 0 :(得分:2)
<form action="annotate_page" method="post">{% csrf_token %}
<input id="repeat" name="something" type="checkbox" >
<label for="repeat">Repeat Sentence?</label>
<br>
<button type="submit">Next</button><br>
</form>
并在视野中
if request.method=="POST":
form = AnnotateForm(request.POST)
if form.is_valid():
print(request.POST)#prints only csrf_token in Query_dict
print(form.cleaned_data["something"])#Always false
你需要在输入字段中给出一个名字,否则就不会被捕获