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

Django中User.objects.create_user()无法创建用户记录求助

Django用户创建失败的解决方案

核心错误修正

你的代码里最关键的错误是获取POST参数的语法错误:
原代码使用request.get.POST('username')是错误写法,Django中正确获取POST参数的方式是request.POST.get('参数名'),参数顺序颠倒会导致所有参数无法获取有效值,最终创建用户的逻辑因参数无效静默失败。

完整修复后的视图代码

from django.contrib.auth.models import User
from django.shortcuts import redirect, render
from django.contrib import messages

def user_signup(request):  
    if request.method == 'POST':
        # 修正POST参数获取方式
        user_name = request.POST.get('username')
        email = request.POST.get('email')
        phone_no = request.POST.get('phone')
        pass1 = request.POST.get('pass1')
        pass2 = request.POST.get('pass2')

        # 1. 验证两次密码是否一致
        if pass1 != pass2:
            messages.error(request, "两次输入的密码不一致")
            return render(request, 'signup_page.html')
        
        # 2. 验证用户名/邮箱是否已存在(避免静默失败)
        if User.objects.filter(username=user_name).exists():
            messages.error(request, "该用户名已被注册")
            return render(request, 'signup_page.html')
        if User.objects.filter(email=email).exists():
            messages.error(request, "该邮箱已被注册")
            return render(request, 'signup_page.html')
        
        # 3. 创建用户(create_user方法会自动保存,无需再调用save())
        user = User.objects.create_user(username=user_name, email=email, password=pass1)
        # 若自定义模型需存储手机号,假设模型为Profile并关联User,可添加以下代码
        # from .models import Profile
        # Profile.objects.create(user=user, phone_no=phone_no)
        
        messages.success(request, "账号注册成功,请登录")
        print('user created')
        return redirect('user_signin')
    
    return render(request, 'signup_page.html')

额外注意事项

  • create_user方法会自动将用户保存到数据库,无需额外调用user.save(),重复调用属于冗余操作。
  • 添加表单验证逻辑(密码一致性、用户名/邮箱唯一性),通过messages框架给前端返回明确提示,避免用户操作后无法得知失败原因。
  • 检查前端表单输入框的name属性是否与后端获取的参数名完全匹配(比如前端name="username"对应后端request.POST.get('username')),属性不匹配也会导致参数获取失败。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 12:52:44