Использование мастера форм django с allauth
В настоящее время мой процесс регистрации пользователей реализован с помощью allauth. Есть ли у кого-нибудь опыт, как сделать этот процесс многостраничным, например, с помощью мастера форм из formtools?
forms.py (хранится по адресу users/forms.py)
class UserCreationForm1(forms.UserCreationForm):
error_message = forms.UserCreationForm.error_messages.update(
{
"duplicate_username": _(
"This username has already been taken."
)
}
)
username = CharField(label='User Name',
widget=TextInput(attrs={'placeholder': 'User Name'})
)
class Meta(forms.UserCreationForm.Meta):
model = User
fields = ['username', 'email', 'title', 'first_name', 'last_name', 'country', ]
field_order = ['username', 'email', 'title', 'first_name', 'last_name', 'country', ]
def clean_username(self):
username = self.cleaned_data["username"]
if self.instance.username == username:
return username
try:
User._default_manager.get(username=username)
except User.DoesNotExist:
return username
raise ValidationError(
self.error_messages["duplicate_username"]
)
class UserCreationForm2(forms.UserCreationForm):
class Meta(forms.UserCreationForm.Meta):
model = User
fields = ['occupation', 'password1', 'password2', 'terms']
field_order = ['occupation', 'password1', 'password2', 'terms']
def clean_terms(self):
is_filled = self.cleaned_data['terms']
if not is_filled:
raise forms.ValidationError('This field is required')
return is_filled
Для views.py у меня есть
SIGNUP_FORMS = [('0', UserCreationForm),
('1', UserCreationForm2)]
TEMPLATES = {'0': 'account/signup_1.html',
'1': 'account/signup_2.html'}
class SignupWizard(SessionWizardView):
def get_template_names(self):
return [TEMPLATES[self.steps.current]]
def done(self, form_list, **kwargs):
for form in form_list:
if isinstance(form, UserCreationForm):
print('form1')
user = form.save(self.request)
elif isinstance(form, UserCreationForm2):
userprofile = form.save(commit=False)
user = self.request.user
userprofile.user = user
userprofile.save()
print('form2')
return HttpResponseRedirect(settings.LOGIN_REDIRECT_URL)
Однако я обнаружил, что после заполнения первой формы и нажатия кнопки для перехода ко второй пользователь перенаправляется к встроенному логину allauth: по адресу accounts/signup/
У кого-нибудь есть совет?