IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

django - validation d'un formulaire [Python 3.X]


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 491
    Par défaut django - validation d'un formulaire
    Bonjour,

    je découvre les formulaires django et je teste la méthode de validation des formulaires.

    donc je crée un formulaire dans forms.py:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    class MyForm(forms.Form):
        myfield = forms.IntegerField(label="myfield")
     
        def clean(self):
            cleaned_data = super(MyForm, self).clean()
            f = cleaned_data.get("myfield")
            print(f)
     
            if f is not None:
                if f <= 3:
                    raise ValidationError(
                        "myfield doit être supérieur à 3"
                    )
            return cleaned_data
    dans views.py :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def bbox(request):
     
        form = MyForm(request.POST)
        if form.is_valid():
            print("plouf")
     
        return render(request, 'myform.html', {})
    Quand je lance, j'ai 'None' qui s'affiche dans la console (qui correspond au print(f) au départ quand le champ est vide, mais quand je rentre une valeur dans le champ, rien ne se passe.

    Qu'est ce que j'ai oublié??


    Merci,
    Nico

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Bonsoir,

    Vous ne passez pas le formulaire form dans le template.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 491
    Par défaut
    J'ai modifié ma vue ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def bbox(request):
     
        form = BBoxForm(request.POST)
        if form.is_valid(): # appel form.clean()
            print("plouf")
        else:
            print("plaf")
            form = BBoxForm()
        return render(request, 'bbox.html', {'form': form})
    J'ai 4 champs dans mon formulaire, il affiche 'plaf' dans la console quand je rempli le premier champ, puis plus rien.
    Dons visiblement cette fonction n'est exécutée qu'une fois...

    Nico

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 491
    Par défaut
    En fait, je voudrais qu'à chaque changement d'un champ, il fasse des tests de cohérence entre les 4 champs de mon formulaire.
    Mais est-ce que c'est possible côté django, dans la définition de la vue ou du formulaire, ou est-ce qu'il faut passer par du jquery implémenté dans le template?

    Nico

  5. #5
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Bonjour,

    Citation Envoyé par DiverSIG Voir le message
    En fait, je voudrais qu'à chaque changement d'un champ, il fasse des tests de cohérence entre les 4 champs de mon formulaire.
    En temps réel ? Faudra utiliser côté client de l'Ajax, ça complexifie pas mal mais c'est possible.

    Sinon le plus simple est de compléter entièrement le formulaire et tester la validation de ton formulaire. Tu peux ajouter des validations de type par exemple avec HTML5, mais pour les valeurs (temps réel ou pas) la complexité varie.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. formulaire django validation
    Par zathoichi dans le forum Django
    Réponses: 1
    Dernier message: 04/08/2009, 12h59
  2. Javascript : Empecher la validation d'un formulaire
    Par otb82 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 17/01/2006, 09h46
  3. Ouvrir une popup lors de la validation d'un formulaire
    Par pod1978 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 23/11/2005, 15h47
  4. Vérification de validation d'un formulaire
    Par tom06440 dans le forum Langage
    Réponses: 8
    Dernier message: 21/09/2005, 14h29
  5. Réponses: 11
    Dernier message: 16/09/2004, 11h39

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo