Frage

Ich habe ein Registrierungssystem mit Django-Registrierung erstellt. Ich habe den RegistrierungsformalermsOfService wie unten gezeigt erweitert. Alles funktioniert gut, außer wenn ein Feld ungültig ist, die Seite ist aktualisiert und alle Felder werden gelöscht, sodass der Benutzer alles wieder eingeben muss. Ist dies das Standardverhalten für Django-Registrierung? Ich möchte den Django-Registrierungscode nicht wirklich ändern. Gibt es sowieso, um dies zum Laufen zu bringen, damit die Felder mit dem bevölkern, was der Benutzer bisher eingegeben hat?

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')
War es hilfreich?

Lösung

Die Django-Registrierung "spüle" das Formular nicht, wenn die Eingabe nicht gültig ist, gibt die Ansicht das mit den veröffentlichte Daten gefüllte Formular zurück.

Übergeben Sie Ihr Formular, um die Ansicht zu registrieren?

Hast du so etwas in deiner URL.Py?

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

Die Metaklasse, die du definiert hast, scheint mir nutzlos zu sein, brauchst du das wirklich? Der Init ist auch ziemlich nutzlos, da Sie das gleiche Ergebnis erzielen können:

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

aber mit weniger Code.

Ich hoffe es hilft :)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top