Pregunta

He creado un sistema de registro usando Django-Registration. He extendido el registro formtermsOfService como se muestra a continuación. Todo funciona bien, excepto si algún campo no es válido, la página se actualiza y todos los campos se borrarán para que el usuario tenga que ingresar todo nuevamente. ¿Es este el comportamiento predeterminado para el registro de django? Realmente no quiero cambiar el código de registro de Django. ¿De todos modos hay que hacer que esto funcione para que deje los campos poblados con lo que el usuario ha ingresado hasta ahora?

class UserCreationFormExtended(RegistrationFormTermsOfService):
    email = forms.EmailField(label=("Email"), help_text = "We'll send...")
    username = forms.RegexField(
        label='Username:',
        max_length=35,
        min_length=6,
        regex=r'^[\w-]{6,35}$',
        help_text = 'Between 6 and 35 characters',
        error_message = 'Enter between 6 and 35 alphanumeric characters.')

    password1 = forms.RegexField(
        max_length=30,
        min_length=6,
        regex=r'^[\w-]{6,35}$',
        help_text = 'Between 6 and 35 characters',
        error_message = 'Enter between 6 and 35 characters.')

    def __init__(self, *args, **kwargs):
        super(UserCreationFormExtended, self).__init__(*args,
        **kwargs)
        self.fields['email'].required = True

    class Meta:
        model = User
        fields = ('username', 'email')
¿Fue útil?

Solución

Django-Registration no "enjuague" el formulario, si la entrada no es válida, la vista devuelve el formulario lleno de los datos publicados.

¿Está pasando su formulario para registrar la vista?

¿Tienes algo así en tu url.py?

url(r'^register/$', 'registration.views.register', {'form_class':UserCreationFormExtended}),

La meta clase que definiste me parece inútil, ¿realmente lo necesitas? El init también es bastante inútil ya que puede tener el mismo resultado con esto:

email = forms.EmailField(label=("Email"), required= True, help_text = "We'll send...")

pero con menos código.

Espero eso ayude :)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top