Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Modelform元类中的Django 1.6错误消息不起作用_Django_Django Forms - Fatal编程技术网

Modelform元类中的Django 1.6错误消息不起作用

Modelform元类中的Django 1.6错误消息不起作用,django,django-forms,Django,Django Forms,我在ModelForms上使用Django 1.6.2和1.6版本中添加的新元选项,表单上的错误不会像我设置的那样显示 我的代码: 模型 模板 请注意模板中打印字段错误的以下几行 {% if form.email.errors %}<span class="glyphicon glyphicon-remove form-control-feedback"></span> <span class="help-block">{{ form.email.

我在ModelForms上使用Django 1.6.2和1.6版本中添加的新元选项,表单上的错误不会像我设置的那样显示

我的代码:

模型

模板

请注意模板中打印字段错误的以下几行

{% if form.email.errors %}<span class="glyphicon glyphicon-remove form-control-feedback"></span>
      <span class="help-block">{{ form.email.errors }}</span>
{% endif %}

但我仍然得到预定义的错误消息。我做错了什么?

通常将错误消息定义为类属性,而不是在内部元中。下一步是为您的电子邮件字段提供一个干净的方法,如果给定的电子邮件无效,该方法将引发ValidationError:

error_messages = {
    "invalid_email": "Email is invalid.",
}

def clean_email(self):
    email = self.cleaned_data["email"]

    # Check the content of email here
    ...

    # If not valid raise ValidationException referencing the predefined error message
    ...
    raise ValidationError(self.error_messages["invalid_email"], code="invalid_email",)

    # If valid return value
    return email

你能核实一下你在这篇文章中的缩进吗?我不确定这是否是您的代码导致了问题,或者在创建问题时只是复制/粘贴/格式问题。谢谢,我没有注意到。这实际上是一个复制粘贴问题,它在我的代码中正确缩进了。谢谢你的澄清。另一个问题:我仍然收到预定义的错误消息是什么意思?它显示在哪里?输入字段的HTML5验证或来自服务器端的字段相关错误消息?我们得到一条字段相关错误消息。我用一封已经存在的电子邮件强制表单,并且{{form.email.errors}}打印一条默认消息,而不是像符咒一样工作。非常感谢但这令人困惑。文档中没有提到必须调用自定义clean_xyz方法。我的理解是,通过简单地在元类中定义一个错误消息字典,默认消息将被新定义的消息替换。我错过什么了吗?
{% if form.email.errors %}<span class="glyphicon glyphicon-remove form-control-feedback"></span>
      <span class="help-block">{{ form.email.errors }}</span>
{% endif %}
error_messages = {
    "invalid_email": "Email is invalid.",
}

def clean_email(self):
    email = self.cleaned_data["email"]

    # Check the content of email here
    ...

    # If not valid raise ValidationException referencing the predefined error message
    ...
    raise ValidationError(self.error_messages["invalid_email"], code="invalid_email",)

    # If valid return value
    return email