首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为内置表单自定义Django表单ValidationErrors?

如何为内置表单自定义Django表单ValidationErrors?
EN

Stack Overflow用户
提问于 2012-06-20 23:35:08
回答 1查看 316关注 0票数 0

我正在利用这些内置Django表单,我遇到了一个小问题。

AdminPasswordChangeForm

  • class AuthenticationForm

  • class PasswordChangeForm

  • class PasswordResetForm

  • class SetPasswordForm

  • class UserChangeForm

  • class UserCreationForm

例如,UserCreationForm生成几个验证错误,我可以使用标记(如{{ form.errors }} )或甚至与特定字段(如{{ form.username.errors }} )相关的标记在模板中显示这些错误。

我知道如何自定义这些错误消息的样式,但如何自定义文本?我只需检查条件语句(如{% if form.password.errors %} )是否存在错误,并将我自己的自定义文本放在该块中。然而,这使我对所引发的错误类型视而不见。

例如,我希望能够识别触发的错误是duplicate_username还是password_mismatch,这样我就可以在模板中写入自己的错误。

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-06-21 01:48:43

一般来说,您可以定制如下所示的清洁方法:

代码语言:javascript
复制
class EventDetailsForm(form.ModelForm):
    class Meta:
        model = Event
        fields = ('name',)
        layout = (
                Fieldset('',
                'name',),
                )

    def clean_name(self):
        event_name = self.cleaned_data['name']
        if Event.objects.filter(name=event_name, status='Live').\
                exclude(id=self.instance.id).exists():
            raise forms.ValidationError('This Name is already in use')
        else:
            return event_name

因此,要重用django的表单,只需将其子类化,添加额外的验证逻辑并在视图函数中调用该表单。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11129663

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档