Question

I RegistrationFormUniqueEmail étendu

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

puis vue changé

#       form = form_class(data=request.POST, files=request.FILES)
        form = CustomRegistrationFormUniqueEmail(data=request.POST, files=request.FILES)

Mais, je vois encore la forme par défaut qui contient quatre champs uniquement.

Était-ce utile?

La solution

Nous avons récemment mis en place sous forme d'un tel. Voici ce que nous avons fait:

  • Créer une nouvelle backend (juste le copier depuis le backend par défaut pour commencer)

    registration/
        backends/
            default/
            custom/ # <- your new backend
    

    ...

  • Dans la nouvelle urls.py ajuster les arguments de back-end

    ...
    { 'backend': 'registration.backends.custom.DefaultBackend' },
    ...
    
  • Créer un forms.py sous custom. Réglez ce formulaire à votre goût (champs et validation)

  • Dans le point de registration/urls.py au backend approprié:

     # from registration.backends.default.urls import *
     from registration.backends.custom.urls import *
    

Cela devrait fonctionner. En particulier Cela fonctionne parce que:

  • Votre custom/__init__.py aura une classe DefaultBackend avec une méthode get_form_class:

    def get_form_class(self, request):
        """
        Return the default form class used for user registration.
        """
        return RegistrationForm
    
  • Et vous importez votre propre RegistrationForm dans ce fichier aussi:

    from registration.backends.custom.forms import RegistrationForm
    

Autres conseils

Je ne suis pas sûr, au large de la main, pourquoi il ne fonctionne pas, mais je suis assez sûr que vous ne pas besoin au views.py de modifier django-enregistrement ... vous pouvez passer votre nouveau CustomRegistrationFormUniqueEmail comme un argument en urls.py.

Vous pouvez essayer de regarder ici extension des signaux à l'aide django-inscription et ici < a href = "http://dmitko.ru/?p=546" rel = "noreferrer nofollow"> http://dmitko.ru/?p=546

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top