Django SignupForm中的注册方法未被覆盖

时间:2019-06-27 22:53:21

标签: django django-allauth allauth

我在Django == 1.10.6中有此工作的SignupForm。

该表单之所以有效,是因为当我更改标签时,它会反映在表单中,但是从不执行signup方法。

我已经为此苦苦挣扎了一段时间,这里我想念什么?

从不打印输出,用户没有正确保存,并且ipdb模块无法启动。

# -*- coding: utf-8 -*-

from django import forms

from crispy_forms.helper import FormHelper
from crispy_forms.layout import Layout, Field, Fieldset, ButtonHolder, Submit, HTML, Div
from crispy_forms.bootstrap import TabHolder, Tab, Accordion, AccordionGroup

from alistate.core.utils import LowerField

from allauth.account.forms import SignupForm as SignupFormBase
from django.contrib.auth import get_user_model

class SignupForm(SignupFormBase):

    def __init__(self, *args, **kwargs):
        super(SignupForm, self).__init__(*args, **kwargs)
        self.helper = FormHelper()
        self.helper.form_tag = False
        self.helper.layout = Layout(
            Div(
                Div(Field('username'), css_class='col-md-12'),
                Div(Field('email'), css_class='col-md-12'),
                Div(Field('password1'), css_class='col-md-12'),
                Div(Field('password2'), css_class='col-md-12'),
            css_class='row'),
            Div(
                Div(Field('nombre1'), css_class='col-md-6'),
                Div(Field('apellido1'), css_class='col-md-6'),
            css_class='row'),
            Div(
                Div(Field('nombre2'), css_class='col-md-6'),
                Div(Field('apellido2'), css_class='col-md-6'),
            css_class='row'),
            Div(
                Div(Field('telefono'), css_class='col-md-12'),
            css_class='row'),
            Div(
                Div(Field('fecha_religiosa', css_class="datetimepicker-signup"), css_class='col-md-12'),
            css_class='row'),
            Div(
                Div(Field('como_conocio'), css_class='col-md-12 register-know'),
            css_class='row'),
        )

    nombre1 = LowerField(label="Nombreeee 1 (novia/o).", required=True, max_length=50)
    apellido1 = LowerField(label="Apellido 1 (novia/o).", required=True, max_length=50)
    nombre2 = LowerField(label="Nombre 2 (novia/o).", required=True, max_length=50)
    apellido2 = LowerField(label="Apellido 2 (novia/o).", required=True, max_length=50)
    fecha_religiosa = forms.DateTimeField(required=True)
    telefono = LowerField(label=u"Teléfono", required=True, max_length=50)
    como_conocio = forms.CharField(label=u"¿Cómo nos conociste?", required=False, widget=forms.Textarea)
    class Meta:
        model = get_user_model()   # or whatever your User model is

    def signup(self, request, user):
        print("yyehehehehe")
        import ipdb
        ipdb.set_trace()
        user.nombre1 = self.cleaned_data['nombre1']
        user.apellido1 = self.cleaned_data['apellido1']
        user.nombre2 = self.cleaned_data['nombre2']
        user.apellido2 = self.cleaned_data['apellido2']
        user.fecha_religiosa = self.cleaned_data['fecha_religiosa']
        user.telefono = self.cleaned_data['telefono']
        user.como_conocio = self.cleaned_data['como_conocio']
        user.save()
        return user

1 个答案:

答案 0 :(得分:0)

通过将 def注册替换为 def注册,我能够使其正常运行

def save(self, request):
    user = super(SignupForm, self).save(request)
    user.nombre1 = self.cleaned_data['nombre1']
    user.apellido1 = self.cleaned_data['apellido1']
    user.nombre2 = self.cleaned_data['nombre2']
    user.apellido2 = self.cleaned_data['apellido2']
    user.celular = self.cleaned_data['celular']
    user.fecha_religiosa = self.cleaned_data['fecha_religiosa']
    user.telefono = self.cleaned_data['telefono']
    user.como_conocio = self.cleaned_data['como_conocio']
    user.save()
    return user
相关问题