You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自定义Django用户创建表单中密码确认字段的验证错误提示

解决Django自定义用户表单中确认密码字段的错误提示定制问题

问题分析

你当前通过字典推导式统一生成所有字段的必填错误提示,但password2字段经field.replace('_', ' ').title()处理后,会生成不符合需求的提示文本,需要单独对该字段的错误信息进行覆盖。

解决方案

修改forms.py中的错误信息配置,单独为password2字段指定自定义的必填错误提示,以下提供两种可行方式:

方式一:在Meta类中直接覆盖

from django.contrib.auth.forms import UserCreationForm
from .models import User

class CustomUserCreationForm(UserCreationForm):
    class Meta:
        model = User        
        fields = ('first_name','last_name','email','date_of_birth', 'gender', 'user_type', 'phone', 'address','photo', 'password1', 'password2' )
        # 先统一生成大部分字段的错误提示
        error_messages = {
            field: {
                'required': f"{field.replace('_', ' ').title()}为必填项。"
            }
            for field in fields
        }
        # 单独覆盖password2的必填错误提示
        error_messages['password2']['required'] = "确认密码为必填项。"
        
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for field_name in self.fields:
            self.fields[field_name].error_messages.update(self.Meta.error_messages[field_name])

方式二:在__init__方法中单独设置

from django.contrib.auth.forms import UserCreationForm
from .models import User

class CustomUserCreationForm(UserCreationForm):
    class Meta:
        model = User        
        fields = ('first_name','last_name','email','date_of_birth', 'gender', 'user_type', 'phone', 'address','photo', 'password1', 'password2' )
        error_messages = {
            field: {
                'required': f"{field.replace('_', ' ').title()}为必填项。"
            }
            for field in fields
        }
        
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        for field_name in self.fields:
            self.fields[field_name].error_messages.update(self.Meta.error_messages[field_name])
        # 单独设置password2的必填错误提示
        self.fields['password2'].error_messages['required'] = "确认密码为必填项。"

效果说明

修改完成后,当用户未填写确认密码字段时,表单会显示确认密码为必填项。的错误提示,符合定制需求。

内容的提问来源于stack exchange,提问作者abu abu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 05:00:53