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

Django表单提交仅重定向无数据存入Admin问题求助

Django表单提交后数据未存入Admin的解决方法

问题根源

你的代码存在两个核心问题:

  1. Django默认User模型必须填写username字段,你创建用户时只传入了first_name和last_name,缺少必填项导致用户对象创建失败(但因为代码没有异常捕获,重定向依然执行,造成数据没存入的假象)。
  2. 获取到的email和password字段没有被用到,且密码不能直接明文存入数据库,必须通过Django提供的方法加密。

修正后的views.py代码

def login_register(request):
    if request.method == 'POST':
        first_name = request.POST['first_name']
        last_name = request.POST['last_name']
        email = request.POST['email']
        password = request.POST['password']

        # 用邮箱作为用户名(也可以让表单单独提供username字段,替换成request.POST['username'])
        username = email

        # 使用create_user方法创建用户,自动处理基础配置
        myuser = User.objects.create_user(
            username=username,
            first_name=first_name,
            last_name=last_name,
            email=email
        )
        # 加密密码后保存
        myuser.set_password(password)
        myuser.save()

        return redirect('shophome')

    return render(request, 'shop/login.html')

额外检查项

  • 确保你的表单设置了method="POST",且action属性指向login_register路由(或者留空让表单提交到当前页面)。
  • 表单中所有input的name属性要和视图中request.POST获取的字段名完全一致(比如name="first_name")。
  • 确认已经执行过python manage.py migrate命令,数据库表结构是最新的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 10:07:36