Ich verwende Django-Registrierung 2.3 für ein Projekt und versuchen, den Standard Registration mit folgenden außer Kraft zu setzen:Django-Registrierung Überschreibung Registrierungsformular
class MyRegistrationForm(RegistrationForm):
captcha = NoReCaptchaField()
class Meta:
model = User
fields = ['first_name', 'last_name', 'username', 'email', 'password1', 'password2']
widgets = {
'first_name' : forms.TextInput(attrs={'class' : 'form-control'}),
'last_name' : forms.TextInput(attrs={'class' : 'form-control'}),
'username' : forms.HiddenInput(),
'email' : forms.EmailInput(attrs={'class' : 'form-control'}),
'password1' : forms.PasswordInput(attrs={'class' : 'form-control'}),
'password2' : forms.PasswordInput(attrs={'class' : 'form-control'}),
}
Ich bin aus meiner urls.py dann ruft mit url(r'^accounts/register/$', RegistrationView.as_view(form_class=MyRegistrationForm), name='registration_register'),
In der Vorlage der captcha
, first_name
und last_name
Felder sind mit form Steuerelement gerendert wird die username
versteckt, aber die anderen Felder werden ohne die Klasse gemacht. Was muss ich tun?
Sie können nicht verwenden 'widgets' Felder außer Kraft zu setzen, die explizit durch die Form deklariert sind. Siehe die [Anmerkung] (https://docs.djangoproject.com/en/1.11/topics/forms/modelforms/#overriding-the-default-fields) in den Dokumenten. In Ihrem Fall wird 'email' durch' RegistrationForm' deklariert, und 'password1' und' password2' werden von 'UserCreationForm' deklariert (welche' RegistrationForm' Unterklassen). Daher können diese drei Felder nicht durch Widgets überschrieben werden. – Alasdair