django - Error creating a multi-step form using Django session
问题描述
I'm currently working on building a multi-step registration form in Django. I followed the official documentation which can be seen here. Although the forms do not show any error, the user does not get created. Is there a problem I might be overlooking?
def signup_step_one(request):
if request.user.is_authenticated:
return HttpResponseRedirect(reverse('accounts:personal-signup'))
else:
if request.method == 'POST':
form = CustomUserCreationForm(request.POST)
if form.is_valid():
# collect form data in step 1
email = form.cleaned_data['email']
password = form.cleaned_data['password1']
# create a session and assign form data variables
request.session['email'] = email
request.session['password'] = password
return render(request, 'personal-signup-step-2.html', context={
'form': form,
"title": _('Create your personal account | Step 1 of 2'),
})
else:
form = CustomUserCreationForm()
return render(request, 'personal-signup-step-1.html', {
"title": _('Create your personal account | Step 1 of 2'),
'form': form,
})
def signup_step_two(request):
# create variables to hold session keys
email = request.session['email']
password = request.session['password']
if request.method == 'POST':
form = CustomUserCreationForm(request.POST)
if form.is_valid():
user = form.save(commit=False)
user.email = email
user.set_password(password)
user.first_name(form.cleaned_data['first_name'])
user.last_name(form.cleaned_data['last_name'])
user.save()
print('user created')
return HttpResponse('New user created')
else:
form = CustomUserCreationForm()
return render(request, 'personal-signup-step-2.html', {
"title": _('Create your account | Step 2 of 2'),
'form': form,
})
解决方案
我注意到 signup_step_two 函数中的以下行将始终返回消息“新用户已创建”,即使表单无效:
return HttpResponse('New user created')
将上面的行放在 if 语句中。还要在 else 语句或模板内打印 form.errors 以检查问题。前任:
if form.is_valid():
# create the user
return HttpResponse('New user created')
else:
print(form.errors)
推荐阅读
- javascript - 谷歌浏览器可以阻止创建 csrf 令牌吗?
- sql - ORA-00937: 不是单组分组函数,已在使用 group by
- go - 编译 Go 时,我在修订版 v0.0.2 处收到以下错误 github.com/xxxxx/xxxxx/go.mod:未知修订版 v0.0.2
- swift - 文本字段部分间距上方的 SwiftUI 表单标签
- c++ - C++ - 如何以独立于平台、线程安全的方式以用户首选的日期/时间语言环境格式格式化文件的最后修改日期和时间
- git - ArgoCD GitOps,其中每个 pod 的图像标签始终是 git commit hash
- c++ - 为什么没有 vtable 的结构有额外的 4 个字节?
- node.js - Docker(在 VSCode 中)不访问转发端口(在 Linux 机器上)
- java - WebSocket 连接无异常被拒绝
- javascript - 如果在时间段内没有调用事件,则执行函数