Django Forms:将两个函数连接在一起进行电子邮件验证



我已经创建了一个名为CreateUserForm的基本创建用户表单(用户名、电子邮件、密码1、密码2(,我想创建一个电子邮件验证过程。使用一个函数就足够简单了。但我想添加一个额外的功能,要求用户在发送验证电子邮件之前接受条款和条件。此外,条款和条件必须在一个单独的html模板页面上。我还创建了一个条款和条件表单,它只是一个简单的BoolianField。我收到一个错误,说:"User"对象没有属性"get"。我必须在代码中的某个位置使用request.get吗?转向正确的方向会很有帮助。我的代码如下:

view.py:

def registerPage(request):
form = CreateUserForm()
if request.method =='POST':
form = CreateUserForm(request.POST)
if form.is_valid():
instance = form.save(commit=False)# Save user data but do not commit to database
return redirect('accept_terms') and instance #accept_terms is the name of the registration/terms_and_conditions.html
else:
form = CreateUserForm()
return render(request,'registration/register.html', {'form': form})
def AcceptTerms(request):
form = Terms_Conditions()
if request.method =='POST':
form = Terms_Conditions(request.POST)
if form.is_valid():
userform = registerPage # I want to get the saved User data from the registerPage function 
send_verification_email(request, userform) #Sends verification email
return HttpResponse('Thank you, an email will be sent for you to verify.')
else:
form = Terms_Conditions()
return render(request,'registration/terms_and_conditions.html', {'form': form})

编辑:

所以我决定使用表单向导,我有以下代码:

class ContactWizard(SessionWizardView):
template_name = "test.html"
def done(self, form_list, **kwargs):
form_data = process_form_data(form_list)
context = [form_data[0]['username'],form_data[0]['email'],form_data[0]['password1'],form_data[0]['password2']]
send_verification_email(self.request, context) # Problem is here
return HttpResponse('Sent')

def process_form_data(form_list):
form_data = [form.cleaned_data for form in form_list]
return form_data

然而,我得到的错误"列表"对象没有属性"保存"。我认为它不喜欢send_verification_email功能,但我不清楚如何解决它

我已经解决了这个问题。问题是我清理了两次数据,一次是在"send_verification_email'"函数外,一次在函数内,这引发了错误。

def done(self, form_list, **kwargs):
form_data = [form for form in form_list]
first_form = form_data[0]
send_verification_email(self.request, first_form)
return HttpResponse('Sent')

最新更新