2011-04-29 3 views
0

À la page 168, il y a deux morceaux de code:Projets pratiques Django - Page 168

def clean_password2(self): 
    if self.cleaned_data['password1'] != self.cleaned_data['password2']: 
     raise forms.ValidationError("You must type the same password each time") 
    return self.cleaned_data['password2'] 

def clean(self): 
    if 'password1' in self.cleaned_data and 'password2' in self.cleaned_data: 
     if self.cleaned_data['password1'] != self.cleaned_data['password2']: 
     raise forms.ValidationError("You must type the same password each time") 
    return self.cleaned_data 

Dans le second cas, le code vérifie si ont une valeur 'password1' et 'password2'. Dans le premier cas, il n'y a pas de vérification de ce type. Pourquoi ?

Répondre

1

clean_password2 Dans clean_password2 vous validez le champ password2 de sorte que vous êtes certain qu'il existe sur ce formulaire et n'avez pas besoin de vérifier l'existence de celui-ci dans self.cleaned_data. Cela ne signifie pas qu'ils ne pouvaient pas vérifier également l'existence de password1, cependant.

La méthode clean valide l'ensemble de la forme et n'a aucune garantie de ce qui est présent.

+0

Merci beaucoup à vous deux. Je suis à la recherche d'un code permettant aux utilisateurs de s'abonner uniquement s'ils ont été invités (un peu comme sur Quora). Où puis-je trouver ça? Merci. – Peter

1

La méthode clean_password2 effectue un nettoyage sur un champ, dans ce cas le champ password2. (docs) La méthode clean est appelée après les validations de champ individuelles C'est un bon endroit pour effectuer des validations multi-champs selon les docs.

En savoir plus here.

+0

c'est celui-ci :-) – Fitoria

Questions connexes