Question

J'ai créé un système d'enregistrement à l'aide django-inscription. J'ai étendu la RegistrationFormTermsOfService comme indiqué ci-dessous. Tout fonctionne très bien, sauf si un champ est invalide la page est actualisée et tous les champs sont effacés afin que l'utilisateur doit saisir à nouveau tout. Est-ce le comportement par défaut pour django-inscription? Je ne veux pas vraiment changer le code django-inscription. Y at-il de toute façon d'obtenir ce travail il quitte les champs peuplés de ce que l'utilisateur est entré à ce jour?

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')
Était-ce utile?

La solution

Django-enregistrement n'a pas « flush » la forme, si l'entrée n'est pas valide la vue renvoie le formulaire rempli avec les données affichées.

Êtes-vous passer votre formulaire pour vous inscrire vue?

Avez-vous quelque chose comme ça dans votre url.py?

url(r'^register/$', 'registration.views.register', {'form_class':UserCreationFormExtended}),

La classe Meta vous il semble inutile de me défini, avez-vous vraiment besoin de ça? Init est également assez inutile puisque vous pouvez avoir le même résultat avec ceci:

email = forms.EmailField(label=("Email"), required= True, help_text = "We'll send...")

mais avec moins de code.

it helps:)

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