django表单验证:验证初始值

django表单验证:验证初始值,django,validation,forms,Django,Validation,Forms,我有一个django表单(forms.form)。每个表单字段都有如下初始值: class SomeForm(forms.Form): city = forms.CharField(initial="Your city here") 如果有人在不更改初始值的情况下发布此表单(即,不输入任何内容作为城市,城市字段将为“此处的您的城市”)。form.is_valid()不会引发验证错误。有没有办法让验证失败?是否有任何内置方法/属性可供调用/设置以使表单验证失败?或者我必须手动验证吗?您必

我有一个django表单(forms.form)。每个表单字段都有如下初始值:


class SomeForm(forms.Form):
  city = forms.CharField(initial="Your city here")


如果有人在不更改初始值的情况下发布此表单(即,不输入任何内容作为城市,城市字段将为“此处的您的城市”)。form.is_valid()不会引发验证错误。有没有办法让验证失败?是否有任何内置方法/属性可供调用/设置以使表单验证失败?或者我必须手动验证吗?

您必须使用Django forms方法手动验证,如下所示:

class SomeForm(forms.Form):
    city = forms.CharField(initial='Your city here')

    def clean_city(self):
        city_name = self.cleaned_data['city']
        if city_name in ['Your city here']:
            raise forms.ValidationError('Enter a city name.')
        return city_name

如果您使用的是Django 1.2或更高版本,则值得付出努力。

您必须使用Django forms方法手动执行验证,如下所示:

class SomeForm(forms.Form):
    city = forms.CharField(initial='Your city here')

    def clean_city(self):
        city_name = self.cleaned_data['city']
        if city_name in ['Your city here']:
            raise forms.ValidationError('Enter a city name.')
        return city_name

如果您使用的是Django 1.2或更高版本,那么值得付出努力。

如果它是纯CharField,为什么会失败?同意您的观点。但这不是我正在开发的应用程序的预期行为。如果它是纯CharField,为什么它会失败?同意你的观点。但这不是我正在开发的应用程序的预期行为。