Vous n'êtes pas identifié(e).
Bonjour tout le monde et bonne année à tous,
Question à propos de is_valid() :
Dans le django_book en français, je lis ceci :
Pour savoir si le formulaire est lié à des
données valides ou pas, appelez la
méthode is_valid() :
1) En utilisant is_valid(), on sait d'office que le formulaire est lié ?on
2) Qu'est-ce qu'un formulaire lié ?
3) Quel genre d'informations vérifie is_valid et comment le vérifie-t'il ?
Merci d'avance pour votre aide.
beegees
Hors ligne
Tout d'abord bonne année à toi aussi
En anglais on dit "bound" pour dire si le formulaire est relié à des données
un formulaire est comme un formulaire...vide, qui a des cases formatées selon sa config (pour un ModelForm, les cases sont les champs du modèle).
Lié ou Bound, c'est juste un autre état du même form : avec des données dans les cases.
Donc ça n'a pas de sens de tester is_valid si tu n'as pas rattachés des données à ton formulaire
Comment on mets des données dans le formulaire ?
tu le fais soit en passant un dictionnaire de données
data = {'nom_du_champ':'valeur',...}
form = MonForm(data)
soit en passant des données postées sur le site :
form = MonForm(request.POST)
après avoir fait l'une de ces deux choses, tu peux tester is_valid()
if form.is_valid():
....
Ah oui, ça teste quoi : les validations "standards" des champs utilisés (Intergerfield n'acceptera pas une chaine de caractères) + toutes les règles de validation que tu veux (voir les docs, fonctions clean_ ou les validators)
Dernière modification par quinode (01-01-2011 15:34:30)
Hors ligne
Tout d'abord bonne année à toi aussi
Merci et merci aussi pour ta réponse.
Comment on mets des données dans le formulaire ?
Donc, le fait de mettre des données dans des inputs, c'est lier le formulaire ?
J'ai ce code :
if request.method == "POST":
form = AuthenticationForm(data=request.POST)
if form.is_valid():
Je présume qu'il va vérifier quelque part que le user beegees a mis le bon nom d'utilisateur et le bon mot de passe ?
Il faut l'indiquer quelque part la correspondance entre un username et un mot de passe ? mais où ?
Encore merci pour ton aide.
beegees
Dernière modification par beegees (01-01-2011 15:41:13)
Hors ligne
Mettre les données, appuyer sur submit...
et dans ta view traiter ces données postées en créant une instance "liée" de ce Form :
if request.method == 'POST' :
form = MonForm(request.POST)
là, ton formulaire est bien lié aux données postées
Hors ligne
Merci pour tes explications.
J'ai modifié entre temps mon message :
Il faut l'indiquer quelque part la correspondance entre un username et un mot de passe ? mais où ?
Encore merci pour l'aide.
beegees
Hors ligne
Houla j'avais pas vu que ton exemple parlait d'authentification
Si tu es dans un schéma d'authentification spécifique (qui n'utilise pas les modèles django.contrib.auth.User ) t'es en manuel là...
Tu doit définir pour ton objet Form une méthode clean(self) qui va indiquer un process de validation impliquant tes deux champs :
- je valide que le username existe (attention, is_valid() ne fera pas ça, il verifiera juste le type de données postées...integer, char, date...)
- je loade l'instance de ce user, et compare le pass stocké ( mon_instance_user.password ) au pass envoyé ( self.cleaned_data['password'] )
Tout est expliqué là :
http://docs.djangoproject.com/en/dev/re … each-other
Hors ligne