Django复选框不返回任何内容
Posted
技术标签:
【中文标题】Django复选框不返回任何内容【英文标题】:Django checkbox do not return nothing 【发布时间】:2021-10-08 21:33:05 【问题描述】:我正在制作一个项目,我需要按顺序获取复选框值,但是当未选中该复选框时,django 不会返回任何内容。 我该怎么做才能返回 False 而不是什么都没有?
forms.py
class myFormExemple(forms.Form):
checkbox = forms.BooleanField(required=False)
views.py
def MyViewExemple(request):
if request.method == 'POST':
print(request.POST.getlist('checkbox'))
context =
'form': myFormExemple
return render(request, "cadastro/myhtmlTemplate.html", context)
和我的HTMLTemplate.html:
<form method="post" id='form'>
% csrf_token %
form.checkbox
<button type="submit">save</button>
</form>
【问题讨论】:
如果未选中该复选框,则 POST 请求将确实不包含该复选框的名称,这就是 HTML 表单的工作方式。 【参考方案1】:如果未选中该复选框,则 POST 请求将确实不包含该复选框的名称,这就是 HTML 表单的工作方式。
但是,您可以使用表单验证和清理数据,并将其转换为布尔值:
def MyViewExemple(request):
if request.method == 'POST':
form = myFormExemple(request.POST)
if form.is_valid():
print(form.cleaned_data['checkbox'])
context =
'form': myFormExemple()
return render(request, "cadastro/myHTMLTemplate.html", context)
因此我们构造了一个以request.POST
为数据源的表单,然后如果表单有效,我们可以得到一个带有form.cleaned_data['checkbox']
的布尔值。
因此,Django 的表单不仅仅用于呈现表单,还用于处理表单的数据、验证数据并将数据转换为另一种类型。
【讨论】:
以上是关于Django复选框不返回任何内容的主要内容,如果未能解决你的问题,请参考以下文章
Django:BooleanField 返回“on”而不是 true?
django MultiValueDictKeyError 错误,我该如何处理