【问题标题】:Django formtools done function not executedDjango formtools完成功能未执行
【发布时间】:2019-10-31 06:54:16
【问题描述】:

我正在尝试在 django 中实现表单向导。这些步骤按预期工作,但在提交最终表单(第二步)后,未命中完成功能。我无法找到原因。请直接。以下是我的代码,

Forms.py

from django import forms

class FormStepOne(forms.Form):
    name = forms.CharField(max_length=100)
    last_name = forms.CharField(max_length=100)
    phone = forms.CharField(max_length=100)
    email = forms.EmailField()

class FormStepTwo(forms.Form):
    otp = forms.CharField(max_length=100)

views.py

from django.shortcuts import render
from .forms import FormStepOne, FormStepTwo
from formtools.wizard.views import SessionWizardView
from django.http import HttpResponseRedirect

# Create your views here.
class FormWizardView(SessionWizardView):
    template_name = 'done.html'
    form_list = [FormStepOne, FormStepTwo]

    def done(self, form_list, **kwargs):
        print('done')
        return render(self.request, 'home.html', {'form_data':[form.cleaned_data for form in form_list],})
        # return HttpResponseRedirect('/home/')

    def process_step(self, form):
        # print(self.get_form_step_data(form)['0-email'])
        # print(self.steps.current)
        if self.steps.current == '0':
            print('send mail to ' + self.get_form_step_data(form)['0-email'])
        else:
            print('verify the entered otp')

我想在第一步提交后发送一封带有 otp 的邮件,然后在第二步中我要求在第一步发送的 otp 进行验证。默认情况下,在提交最后一步后,页面会重定向到第 1 步。为什么?

【问题讨论】:

    标签: django django-formwizard django-formtools


    【解决方案1】:

    我在上面的查询中找到了答案。由于 process_step(),done 似乎没有执行。我刚刚评论了 process_step() 函数,并且 done() 函数被执行了。我想我将不得不更深入地研究它。

    【讨论】:

      猜你喜欢
      • 2020-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-18
      • 1970-01-01
      • 2012-01-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多