Django Forms:将两个功能连接在一起以进行电子邮件验证

Django Forms: Connecting two functions together for Email Verification

我已经创建了一个名为 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

但是我收到错误 'list' 对象没有属性 'save'。我认为它不喜欢 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')