2

BooleanField利用規約とプライバシー ポリシーに同意するための基本的な登録フォームがあります。私がやりたいことは、ユーザーがチェックしない場合に発生する ValidationError の言語を変更することです。

class RegisterForm(forms.Form):
    username = forms.CharField(label="Username")
    email = forms.EmailField(label="Email")
    location = forms.CharField(label="Location",required=False)
    headline = forms.CharField(label="Headline",required=False)
    password = forms.CharField(widget=forms.PasswordInput,label="Password")
    confirm_password = forms.CharField(widget=forms.PasswordInput,label="Confirm Password")
    terms = TermsField(label=mark_safe("I have read and understand the <a href='/terms'>Terms of Service</a> and <a href='/privacy'>Privacy Policy</a>."),required=True)

TermsFieldからサブクラス化されBooleanFieldます:

class TermsField(forms.BooleanField):
    "Check that user agreed, return custom message."

    def validate(self,value):
        if not value:
            raise forms.ValidationError('You must agree to the Terms of Service and Privacy Policy to use this site.')
        else:    
            super(TermsField, self).validate(value)

ユーザーが TermsField をチェックしない場合、フォームは検証されませんが、一般的な「このフィールドは必須です」というエラーが返されるという点で正しく検証されます。これは非常に単純な作業のように思えますが、基本的な間違いを犯していると確信しています。何か案は?

4

1 に答える 1