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.

È stato utile?

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 sotto custom. 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 classe DefaultBackend con un metodo get_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

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