Domanda

Ho creato un sistema di registrazione utilizzando la registrazione django.Ho esteso RegistrationFormTermsOfService come mostrato di seguito.Funziona tutto bene, tranne se qualche campo non è valido, la pagina viene aggiornata e tutti i campi vengono cancellati, quindi l'utente deve inserire nuovamente tutto.È questo il comportamento predefinito per la registrazione di Django?Non voglio davvero cambiare il codice di registrazione di Django.Esiste un modo per farlo funzionare in modo che lasci i campi popolati con ciò che l'utente ha inserito finora?

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')
È stato utile?

Soluzione

La registrazione Django non "svuota" il modulo, se l'input non è valido la vista restituisce il modulo compilato con i dati pubblicati.

Stai passando il modulo per registrarti?

Hai qualcosa del genere nel tuo url.py?

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

La classe Meta che hai definito mi sembra inutile, ne hai davvero bisogno?Anche init è piuttosto inutile poiché puoi ottenere lo stesso risultato con questo:

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

ma con meno codice.

Spero che sia d'aiuto :)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top