提交时Django Forms BooleanField返回'on'

Poo*_*oja 3 forms django http-post

您好,我是Django Forms的新手.我想在我的表单中添加一个复选框.当我提交表单时,我希望复选框字段应该返回True或False(取决于是否选中复选框).

但是如果选中该字段则发布'on',如果未选中该字段则发布任何内容.以下是我的表单中的代码段:

from django import forms
class MyForm(forms.Form):
    def __init__(self):
        self.fields['has_code']= forms.CharField(widget= forms.CheckboxInput())
Run Code Online (Sandbox Code Playgroud)

我想要的是当我发布表单时,我应该将帖子数据作为{'has_code':True}

Dan*_*man 8

这是你的浏览器,而不是Django.但是(虽然你没有显示你的观点,这会有所帮助)你正在查看request.POST.不要那样做.使用Django表单的全部意义在于它将这样的东西标准化,所以你应该查看表单的cleaned_datadict.

def my_form_view(request):
    if request.method == 'POST':
        my_form = MyForm(request.POST)
        if my_form.is_valid():
            # my_form.cleaned_data['has_code'] is now a bool
Run Code Online (Sandbox Code Playgroud)

您还应该BooleanField在表单中使用.另外,__init__除非你做一些动态的事情,否则你不应该覆盖.你的表格应该只是:

class MyForm(forms.Form):
    has_code = forms.BooleanField(widget= forms.CheckboxInput())
Run Code Online (Sandbox Code Playgroud)