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

Django注册表单异常:密码不匹配提示错误且无法正常注册

问题分析与解决方案

核心问题根源

你的代码中models.py里的User类重复继承了models.Model,而AbstractUser本身已经是models.Model的子类,这种重复继承会导致模型元类冲突,进而引发ModelForm的验证逻辑异常,使得form.is_valid()始终返回False,直接进入else块显示模糊错误,根本没走到密码匹配的校验逻辑。

另外,表单的密码字段使用TextInput虽然能显示密码框,但不符合Django的规范写法,也可能带来潜在问题。

修复步骤

1. 修正User模型继承

修改models.py,去掉多余的models.Model继承:

from django.contrib.auth.models import AbstractUser
from django.db import models

class User(AbstractUser):
    pass

2. 优化表单密码字段(可选但推荐)

修改forms.py,将密码字段的widget替换为Django自带的PasswordInput,更符合规范:

from django.forms import ModelForm, TextInput, PasswordInput
from django.contrib.auth.models import User

class UserRegistrationForm(ModelForm):
    class Meta:
        model = User
        fields = ['username', 'email', 'password']

        widgets = {
            'username': TextInput(
                attrs={'class': 'input form-control', "placeholder": "Username", 'autocomplete': 'off'}),
            'password': PasswordInput(
                attrs={'class': 'input form-control', "placeholder": "Password", 'autocomplete': 'off'}),
            'email': TextInput(
                attrs={"class": "input form-control", "type": 'email', "placeholder": "johndoe@gmail.com", 'autocomplete': 'off'}),
        }

3. 优化错误提示(可选)

修改views.py的else块,显示具体的表单错误,方便排查问题:

else:
    # 遍历表单所有错误并提示
    for field, errors in form.errors.items():
        for error in errors:
            messages.error(request, f"{field}: {error}")
    return render(request, "network/register.html", {
        "register_form": form
    })

同时在模板register.html中添加表单错误显示(比如放在表单上方):

{% if register_form.errors %}
    <div class="alert alert-danger">
        {% for field_errors in register_form.errors.values %}
            {% for error in field_errors %}
                <p>{{ error }}</p>
            {% endfor %}
        {% endfor %}
    </div>
{% endif %}

验证修复效果

修复后,当表单验证通过(用户名、邮箱、密码格式符合要求),才会进入密码匹配校验逻辑,此时输入错误的确认密码就会显示预期的"Passwords must match."提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 23:35:15