Django 复选框不 return 什么都没有

Django checkbox do not return nothing

我正在做一个项目,我需要按顺序获取复选框值,但是当该复选框未选中时,django 不会 return 任何东西。 我该怎么做 return 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)

和myHTMLTemplate.html:

<form method="post" id='form'>
    {% csrf_token %}
    {{form.checkbox}}          
    <button type="submit">save</button>
</form>

如果未选中该复选框,POST 请求确实 包含该复选框的名称,这就是 HTML 表单的工作方式.

但是,您可以使用表单验证和清理数据,并将其转换为布尔值:

def MyViewExemple(request):
    if request.method == 'POST':
        form = myFormExemple(<strong>request.POST</strong>)
        if form.is_valid():
            print(<strong>form.cleaned_data['checkbox']</strong>)
    context = {
        'form': myFormExemple()
    }
    return render(request, "cadastro/myHTMLTemplate.html", context)

我们就这样构建了一个以request.POST作为数据源的表单,然后如果表单有效,我们就可以得到一个布尔值form.cleaned_data['checkbox']

Django 的表单因此 仅用于呈现表单,还用于处理表单数据、验证数据并将数据转换为另一种类型。