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: Faire apparaitre les messages d'erreurs pour chaque champs d'un formulaire.


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 21
    Par défaut Django: Faire apparaitre les messages d'erreurs pour chaque champs d'un formulaire.
    Bonsoir !

    Bon alors, voila ce que j'aimerais faire. J'aimerais que quand j'essayde de valider mon formulaire, si un champ n'etait pas rempli correctement (Exemple laisser un champ vide alors qu'il devrait etre rempli. ), afficher un message d'erreur dans ce champ.

    Je sais qu'il est possible de faire ca avec Django. Cependant pour moi, rien ne se passe :/

    voici la partie concernée de mon template:

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    {% extends "skeleton.html" %}
    {% load staticfiles %}
     
     
    {% block content %}
     
    <div class="container">
     
        <form class="form-horizontal" action="{% url 'proposal:proposal.views.proposal_create' %}" method="\
    post">
            {% csrf_token %}
            <fieldset>
     
                <div class="bs-example"> <!-- Tabs for separation of form -->
     
                    <ul class="nav nav-tabs"> <!-- Name of Tabs -->
                        <li class="active"><a data-toggle="tab" href="#sectionA">Proposal Information</a></\
    li>
                        <li><a data-toggle="tab" href="#sectionB">Team</a></li>
                        <li><a data-toggle="tab" href="#sectionC">Target List</a></li>
                        <li><a data-toggle="tab" href="#sectionD">Scientific Justification</a></li>
                    </ul> <!-- Name of Tabs -->
     
                    <div class="tab-content"> <!-- Content of Tabs -->
     
                        <div id="sectionA" class="tab-pane fade in active"> <!-- Content of tab Proposal In\
    formation -->
     
                          <h3>Proposal Information</h3>
                          <!-- Text input for title field-->
                          <div class="form-group">
                            <label class="col-md-4 control-label" for="title">Title**</label>
                            <div class="col-md-6">
                              <input id="title" name="title" type="text"
                                      {% if form.title.errors %}
                                     placeholder="{{ form.title.errors }}"
                                     {% else %}
                                     placeholder="Title of your proposal"
                                     {% endif %}
                                     class="form-control input-md">
                              {% for error in form.title.errors %}
                              {{ error }}
                              {% endfor %}
                            </div>
    </div>
    et ma views :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
     
    def proposal_create(request):
        """                                                                                                 
        Add a new proposal in the table Proposals                                                           
        Manage the webpage new_proposal                                                                     
        :var keywords: Permet de récupérer tout les mots-clefs existant pour pouvoir les afficher ensuite.  
        """
     
        keywords = Keywords.objects.all() # send the list of existing keywords                              
     
        if request.method == 'POST':
     
            if 'submit' in request.POST :
     
                form = ProposalForm(request.POST, request.FILES)
                if form.is_valid():
     
            	proposal = form.save(commit=False)
                    try:
                        name_bdd = User.objects.get(lastName = request.POST['pi_last_name']) #risque de bug\
     avec bdd vide !                                                                                        
                        if name_bdd.firstName != request.POST['pi_first_name']: #risque de bug avec bdd vid\
    e                                                                                                       
            		raise
                    except:
                        return render(request, 'new_user.html')
                    try:
                        form.check_co_pi_exist(request)
                        proposal.save()
                        messages.info(request, "Proposal enregistré !")
                        proposal.user_link.add(name_bdd)
                        form.add_co_pi_bdd(request, proposal)
                    except:
                        messages.warning(request, "Une erreur est survenue pendant l'enregistrement du Prop\
    osal")
                else:
                    messages.error(request, print(form.as_table()))
                    messages.error(request, form['title'].errors)
                    messages.error(request, "Le Formulaire que vous voulez soumettre n'est pas complet")
     
            elif 'save' in request.POST:
     
                form = ProposalFormSave(request.POST, request.FILES)
                if form.is_valid():
     
                    MemoryProposal = form.save(commit=False)
                    MemoryProposal.save()
                    messages.info(request, "Proposal sauvegardé !")
     
            elif 'reset' in request.POST :
                form = ProposalForm()
     
            elif 'add_member' in request.POST:
                return render(request, 'new_user.html')
     
        else:
            form = ProposalForm()
     
        return render(request, 'new_proposal.html', {'keywords': keywords})

    Je sais que mon template est un peu compliqué. Mais j'avais besoin d'un affichage un peu spécial pour mon formulaire et je ne pense pas qu'un simple {{ form.as_p }} aurait suffit pour l'afficher comme je le veux et récupérer les erreurs plus facilement.

    Voila, alors si une bonne ame connait la solution, Je serais heureux de l'apprendre a mon tour.

    Bye bonne soirée

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2015
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2015
    Messages : 21
    Par défaut
    Hum.. je sais pas trop comment ca c'est passé pour Django mais .. ca marchait pas et maintenant.. ca marche. Sans plus de raisons logiques que ça.

    Donc bon, c'est cool. Vive le brainfuck !

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

Discussions similaires

  1. message d'erreur pour la validation d'un formulaire
    Par cyriane dans le forum VB.NET
    Réponses: 1
    Dernier message: 15/05/2012, 11h26
  2. Réponses: 5
    Dernier message: 15/06/2010, 08h37
  3. Réponses: 1
    Dernier message: 23/03/2009, 15h56
  4. faire apparaitre un message d'erreur
    Par Emcy dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 18/03/2008, 18h55
  5. Quel support de stockages choisir pour les messages d'erreur?
    Par jlassiramzy dans le forum Struts 1
    Réponses: 1
    Dernier message: 22/11/2007, 13h51

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