Django 中的复选框输入验证

发布于 2024-12-10 12:51:42 字数 592 浏览 0 评论 0原文

我想在我的注册字段中添加一个复选框以了解条款和使用。我怎样才能编写一个干净的方法来验证这一点。

我编写了一个干净的方法,我想确保我正确捕获复选框值:

 def clean_terms(self):
         if self.cleaned_data["terms"] == u'on':
             raise forms.ValidationError(
                 "You have to accept terms&conditions to complete registration"
             )

因此,当我填写注册表并发布它时,它给了我这个验证错误

:条件:选择一个有效的选项。 on 不是可用的选项之一。

那么我如何理解复选框已选中以及如何正确实现 term&use 复选框?

我的复选框字段:

 terms = forms.ChoiceField(
     label="Terms&Conditions",
     widget=forms.CheckboxInput()
 )

I want to add a checkbox to my registration field for terms&use. How can I write a clean method to validate this.

I have written a clean method where I want to be sure that I'm catching checkbox value correctly:

 def clean_terms(self):
         if self.cleaned_data["terms"] == u'on':
             raise forms.ValidationError(
                 "You have to accept terms&conditions to complete registration"
             )

As a result when I fill my registration form and post it, it gives me this validation error :

Terms & Conditions: Select a valid choice. on is not one of the available choices.

So how can I understand that a checkbox is checked and how to correctly implement a term&use checkbox ?

My checkbox field :

 terms = forms.ChoiceField(
     label="Terms&Conditions",
     widget=forms.CheckboxInput()
 )

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

温暖的光 2024-12-17 12:51:42

不要将 ChoiceField 用于单个复选框。使用 BooleanField

terms = forms.BooleanField(
    error_messages={'required': 'You must accept the terms and conditions'},
    label="Terms&Conditions"
)

您甚至不需要 clean_ 方法。

Don't use a ChoiceField for a single checkbox. Use a BooleanField.

terms = forms.BooleanField(
    error_messages={'required': 'You must accept the terms and conditions'},
    label="Terms&Conditions"
)

You don't even need a clean_ method.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文