Django表单提交仅重定向无数据存入Admin问题求助
Django表单提交后数据未存入Admin的解决方法
问题根源
你的代码存在两个核心问题:
- Django默认
User模型必须填写username字段,你创建用户时只传入了first_name和last_name,缺少必填项导致用户对象创建失败(但因为代码没有异常捕获,重定向依然执行,造成数据没存入的假象)。 - 获取到的
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
相关产品推荐
相关产品推荐

