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?

如何使用 PHP 将复选框的值传递给 mySQL 数据库?

django MultiValueDictKeyError 错误,我该如何处理

即使代码在 python 中工作,Zapier Python 编辑器也不输出任何内容

如何阅读帖子上的复选框值?

Django模板ifequal标签