【问题标题】:django form validation: validating initial valuesdjango 表单验证:验证初始值
【发布时间】:2011-06-12 07:07:04
【问题描述】:

我有一个 django 表单 (forms.Form)。每个表单字段都有初始值,例如,

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

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

【问题讨论】:

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

标签: django validation forms


【解决方案1】:

您必须使用 Django 表单 clean_fieldname 方法手动进行验证,如下所示:

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 或更高版本,custom validators 值得努力。

【讨论】:

    猜你喜欢
    • 2011-01-26
    • 2014-09-28
    • 1970-01-01
    • 2011-03-10
    • 2011-01-19
    • 2021-06-05
    • 1970-01-01
    • 2014-12-06
    • 2017-08-24
    相关资源
    最近更新 更多