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

Django用户注册表单报错:存在未知字段password1、password2

Django注册表单报错解决:Unknown field(s) (password1, password2) specified for User

问题根源

你的代码存在三个关键错误:

  • 拼写失误:forms.py里把password拼成了passward,导致Django无法识别字段
  • 字段声明错误:password1和password2是UserCreationForm自带的表单字段,不属于User模型,不能写在Meta类的fields列表里
  • 视图调用错误:views.py的注册视图用了默认的UserCreationForm,而非你自定义的UserRegistrationForm,所以邮箱字段不显示

修正后的代码

forms.py

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


class UserRegistrationForm(UserCreationForm):
    email = forms.EmailField(required=True)  # 强制用户填写邮箱

    class Meta:
        model = User
        fields = ['username', 'email']  # 仅声明User模型自带的字段,password1/password2由父类提供

views.py

from django.shortcuts import render, redirect
from .forms import UserRegistrationForm


def register(request):
    if request.method == 'POST':
        form = UserRegistrationForm(request.POST)
        if form.is_valid():
            form.save()
            # 保存成功后跳转到登录页(假设你已配置名为login的URL)
            return redirect('login')
    else:
        form = UserRegistrationForm()
    return render(request, 'register.html', {"form": form})

补充说明

  • UserCreationForm已经内置了password1和password2的验证逻辑(比如两次密码一致性检查),无需额外编写
  • 给email字段加required=True,确保用户必须填写邮箱,匹配你的需求
  • 视图需处理POST请求,验证表单有效性后保存用户,再完成页面跳转

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 18:05:00