我尝试在用户注册时创建用户注册,他必须移至最后一个称为“完整注册”的部分。
我认为任务是按会话完成的,我需要知道在这种情况下使用会话是否正确。如果使用会话良好,那么每次出现关键错误时,如何保存第一种形式的数据?
我确定complete_register函数中的save方法是错误的,但是我不知道如何继续完成此任务。
views.py
from django.shortcuts import render, redirect
from .forms import RegistrationForm, CompleteRegisterForm
from importlib import import_module
from django.conf import settings
def register(request):
if request.method == "POST":
user_form = RegistrationForm(request.POST)
if user_form.is_valid():
user_form.save(commit=False)
SessionStore = import_module(settings.SESSION_ENGINE).SessionStore
user_session = SessionStore()
user_session['continue_form'] = user_form.clean()
# user_session.create()
return redirect("account:complete-register")
else:
error_msg = "something went wrong"
return render(request, "account/registration.html", {"user_form": user_form, "error_msg": error_msg})
else:
user_form = RegistrationForm()
return render(request, "account/registration.html", {"user_form": user_form})
def complete_register(request):
if request.method == "POST":
# get the rest of data by session
user_session = request.session
complete_form = CompleteRegisterForm(request.POST)
if complete_form.is_valid():
form = user_session['continue_form'].save()
complete_form.save()
return redirect("music:albums")
else:
error_msg = "something went wrong"
context = {"complete": complete_form, "error_msg": error_msg}
return render(request, "account/complete_register.html", context)
else:
complete_form = CompleteRegisterForm()
return render(request, "account/complete_register.html", {"complete": complete_form})