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:
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 {% 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>
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![]()
Partager