Die Django-Registrierung löst alle Felder, wenn einer von ihnen ungültig ist
-
27-10-2019 - |
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')
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 :)