Non in grado di aggiungere campi personalizzati per django-registrazione
-
05-10-2019 - |
Domanda
I RegistrationFormUniqueEmail
esteso
class CustomRegistrationFormUniqueEmail(RegistrationFormUniqueEmail):
first_name = forms.CharField(label=_('First name'), max_length=30,required=True)
last_name = forms.CharField(label=_('Last name'), max_length=30, required=True)
def save(self, profile_callback=None):
new_user = super(CustomRegistrationFormUniqueEmail, self).save(profile_callback=profile_callback)
new_user.first_name = self.cleaned_data['first_name']
new_user.last_name = self.cleaned_data['last_name']
return new_user
vista poi cambiato
# form = form_class(data=request.POST, files=request.FILES)
form = CustomRegistrationFormUniqueEmail(data=request.POST, files=request.FILES)
Ma, ancora vedo modulo predefinito che contiene solo quattro campi.
Soluzione
Recentemente abbiamo implementato tale forma a. Ecco quello che abbiamo fatto:
-
Crea un nuovo
backend
(basta copiarlo dal backend predefinito per cominciare)registration/ backends/ default/ custom/ # <- your new backend
...
-
Nel nuovo
urls.py
regolare gli argomenti di back-end... { 'backend': 'registration.backends.custom.DefaultBackend' }, ...
-
Crea un
forms.py
sottocustom
. Regolare questa forma di vostro gradimento (campi e validazioni) -
Nel punto
registration/urls.py
al corretto backend:# from registration.backends.default.urls import * from registration.backends.custom.urls import *
che dovrebbe funzionare. In particolare Questo funziona perché:
-
Il tuo
custom/__init__.py
avrà una classeDefaultBackend
con un metodoget_form_class
:def get_form_class(self, request): """ Return the default form class used for user registration. """ return RegistrationForm
-
E si importa il proprio
RegistrationForm
in quel file, troppo:from registration.backends.custom.forms import RegistrationForm
Altri suggerimenti
Non sono sicuro, fuori mano, perché non sta funzionando, ma sono abbastanza sicuro che non non necessità di views.py
di modificare django-registrazione ... è possibile passare il vostro nuovo CustomRegistrationFormUniqueEmail
come un argomento in urls.py
.
Si può provare a guardare qui Estendere django-registrazione tramite segnali e qui < a href = "http://dmitko.ru/?p=546" rel = "nofollow noreferrer"> http://dmitko.ru/?p=546