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

Python Discussion :

Condition de validation d'un formulaire


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 17
    Par défaut Condition de validation d'un formulaire
    Bonjour,

    j'ai créé un formulaire qui me permet d'ajouter des noms de machines à une liste, voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    lass Saisie_machines(forms.Form):
            ajout = forms.CharField(max_length=200)
     
    def Saisie(request):
            if request.method == 'POST':
                    form = Saisie_machines(request.POST)
                    if form.is_valid():
                            ajout = form.cleaned_data['ajout']
                            new_machine = Machine(nom=ajout)
                            new_machine.save()
                            return render(request,'dns_app/ajout.html', locals())
            else:
                    form = Saisie_machines()
     
            return render_to_response('dns_app/formulaire.html', { 'form': form, }, context_instance=RequestContext(request))
    Ce que je cherche à savoir faire, c'est validé ce formulaire et donc ajouter une nouvelle machine à la liste, seulement si le nom de celle-ci se terrmine par ".pmr".
    Une ER sera utilisée mais comment l'utiliser dans mon formulaire ?

    Merci pour votre aide

  2. #2
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 553
    Par défaut
    Salut,

    je connais pas trop django mais à première vue, je pense qu'il suffit de rajouter le test à base d'ER au même niveau que ton form.is_valid() pour avoir un truc de ce genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if form.is_valid() and machine_name_valid(form.cleaned_data['ajout']):
    après faut bien entendu écrire la fonction machine_name_valid() pour réellement tester le nom avec l'expression régulière.

    mais si ça se trouve, y a un moyen de personaliser la méthode is_valid() de ton formulaire et d'y rajouter directement le test sur le nom de la machine.


    pour le test avec l'expression régulière, la méthode re.match() a des chances de t'interesser.

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 17
    Par défaut
    Merci pour cette réponse et pour le nom de la méthode qui en effet m'intéresse !!

    Je ne suis pas sûre de maîtriser suffisamment Django pour savoir comment écrire une fonction machine_name_valid( ) mais je vais gratter là dessus.

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 553
    Par défaut
    machine_name_valid() c'est juste un nom quelconque pour illustrer ce que doit faire la fonction.

    pour être plus précis, n'importe quelle fonction fera l'affaire tant qu'elle vérifie que le nom de la machine qui a été renseigné dans le formulaire se termine bien par ".pmr" et qu'elle retourne True quand c'est effectivement le cas et False sinon.

    cette fonction n'est pas spécifique à Django, c'est simplement du Python.
    à vrai dire, y a très certainement moyen de ne pas faire de fonction en plus et de tester directement le retour de re.match()

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2014
    Messages : 17
    Par défaut
    Sauriez-vous me dire comment spécifier dans re.match() que je souhaire appliquer l'ER au nom de la machine ?

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2010
    Messages : 553
    Par défaut
    la doc specifie que le prototype de la méthode match est celui:
    re.match(pattern, string[, flags])
    dans lequel
    • pattern est la chaine qui défini l'expression régulière
    • string est la chaine à vérifier (form.cleaned_data['ajout'] si je ne me trompe pas)
    • flags permet de fournir des options pour adapter le comportement de la vérification


    donc si l'expression régulière est la suivante: r".+\.pmr"
    et si le nom de la machine est contenu dans form.cleaned_data['ajout']
    alors tu devrais avoir un truc du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    re.match(r".+\.pmr", form.cleaned_data['ajout'])

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

Discussions similaires

  1. [AC-2007] Conditions de validation d'un formulaire
    Par Nono075 dans le forum VBA Access
    Réponses: 9
    Dernier message: 08/12/2013, 15h27
  2. Conditions pour remplissage d'un Formulaire
    Par budiste dans le forum Langage
    Réponses: 6
    Dernier message: 15/12/2005, 15h36
  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