django - 如何在发生这种情况的字段附近的模板中打印 ValidationError?

标签 django

我正在覆盖方法 clean_:

def clean_password(self):
    value_password = self.cleaned_data.get('password')
    if len(str(self.cleaned_data['password'])) < 6:
        raise forms.ValidationError("Password must been more then 6 symbols")
    elif len(str(self.cleaned_data['password'])) > 45:
        raise forms.ValidationError("Password must been less 45 symbols")
    elif value_password is None:
        raise forms.ValidationError("Field of password can't are blank")
    return value_password

def clean_password2(self):
    value_password2 = self.cleaned_data.get('password2')
    if len(str(self.cleaned_data['password2'])) < 6:
        raise forms.ValidationError(self.error_messages['password_mismatch'],
                                    code='password_mismathc')
    elif len(str(self.cleaned_data['password2'])) > 45:
        raise forms.ValidationError("Password must been less 45 symbols")
    return value_password2

def clean(self):
    super(Form_registration, self).clean()
    data = self.cleaned_data
    if data["password"] != data["password2"]:
        raise forms.ValidationError("Password must been are equal")
    return data

如果我写这个 {{ form.errors }} 然后在首页打印错误,但我希望错误打印在表单密码附近。

我应该做什么?

最佳答案

更改您的 clean方法通过将字段名称传递给它来引发验证错误。

def clean(self):
    super(Form_registration, self).clean()
    data = self.cleaned_data
    if data["password"] != data["password2"]:
        raise forms.ValidationError({'password': ["Passwords must be the same."]})
    return data

编辑:

您的模板应如下所示:
<form action="" method="post">
    {% csrf_token %}
    {{ form.non_field_errors }}
    <div class="fieldWrapper">
        {{ form.password.errors }}
        <label for="{{ form.password.id_for_label }}">Password:</label>
        {{ form.password }}
    </div>
    <div class="fieldWrapper">
        {{ form.password2.errors }}
        <label for="{{ form.password2.id_for_label }}">Confirm Password:</label>
        {{ form.password2 }}
    </div>
</form>

关于django - 如何在发生这种情况的字段附近的模板中打印 ValidationError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23818234/

相关文章:

python - 为什么 Django 语言本地化的 makemessages 函数会忽略 html 文件?

python - Django,找不到网址?

django - 使用 SSL 在 django 上进行 boto 存储的 URL 格式

python - 使用完整的 url 找不到 Django 页面

django - 我应该以任何方式避免 Django 中的多表(具体)继承吗?

python - 使用 django 强制执行唯一的上传文件名?

python - Django allauth 自定义登录表单不呈现自定义用户模型中的所有字段

Django get request.POST.get() 参数未按预期工作,参数名称带括号[]

python - 如何在没有Django模型的情况下查询数据库?

python - WSGI/Django : pass username back to Apache for access log