Django formtools выполнено, функция не выполнена - PullRequest
0 голосов
/ 17 июня 2019

Я пытаюсь реализовать FormWizard в Django. Шаги работают, как и ожидалось, но после отправки окончательной формы (второй шаг) функция done не будет нажата. Я не могу найти причину, почему. Пожалуйста, прямой. Ниже приведен мой код,

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 после отправки 1-го шага, а затем на втором шаге я прошу otp, который был отправлен на первом шаге для проверки. И по умолчанию после отправки последнего шага страница перенаправляется на шаг 1. Почему?

1 Ответ

0 голосов
/ 18 июня 2019

Я нашел ответ на свой запрос выше.Кажется, готово не выполняется из-за process_step ().Я только что прокомментировал функцию process_step (), и функция done () была выполнена.Думаю, мне придется погрузиться в него глубже.

...