提交时Django Forms BooleanField返回'on'

时间:2013-10-17 09:50:09

标签: django forms 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())

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

1 个答案:

答案 0 :(得分:7)

那是你的浏览器,而不是Django。但是(虽然你没有显示你的观点,这会有所帮助)你正在查看request.POST。不要那样做。使用Django表单的全部意义在于它会对这样的内容进行规范化处理,因此您应该查看表单的cleaned_data字典。

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

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

class MyForm(forms.Form):
    has_code = forms.BooleanField(widget= forms.CheckboxInput())