Bonjour a tous, sur une de mes pages, j'ai plusieurs formulaires, mais j'ai constater que si une des variables POST étais vide je recevais un message d'erreurs dans ce genre la :
Donc si j'ai bien compris toute les variables POST doivent avoir une valeur par défaut dans les différents formulaire, pour que Django ne considère pas la variable comme inexistante.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4Exception Type: MultiValueDictKeyError Exception Value: "Key 'id_album' not found in <QueryDict: {u'csrfmiddlewaretoken': [u'4ebc1bff327889fa70fb3ec58cd35dfd'], u'del': [u'69'], u'favo': [u'a'], u'delete': [u'']}>"
J'ai essayer en mettant une valeur par défaut aux différentes variables POST, mais cette fois-ci je reçois un autres message d'erreur :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4Exception Type: DoesNotExist Exception Value: Collection matching query does not exist.
je vous met mes formulaires :
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 <table class="tabResultAlbum" cellpadding="2" cellspacing="5" > {% for list in list_album %} <tr> {% ifequal list.is_favourite 1 %} <form name="on" action="{% url libertyproject.imagin.views.view_album %}" method="post"> {% csrf_token %} <td style="width: 5%"><input class="onAlbum" name="Album" type="submit" value="" /></td> <input type="hidden" name="id_album" value="{{list.id}}"> <input type="hidden" name="favo" value="{{list.is_favourite}}"> <!-- Champ par defaut --> <input type="hidden" name="del" value="0"> </form> {% else %} <form name="off" action="{% url libertyproject.imagin.views.view_album %}" method="post"> {% csrf_token %} <td style="width: 5%"><input class="offAlbum" name="Album" type="submit" value="" /></td> <input type="hidden" name="id_album" value="{{list.id}}"> <input type="hidden" name="favo" value="{{list.is_favourite}}"> <!-- Champ par defaut --> <input type="hidden" name="del" value="0"> </form> {% endifequal %} <form name="del" action="{% url libertyproject.imagin.views.view_album %}" method="post"> {% csrf_token %} <td style="width: 120px"><input onclick="if(verif()) return true; else return false;" class="delAlbum" name="delete" type="submit" value="" /></td> <input type="hidden" name="del" value="{{list.id}}"> <!-- Champ par defaut --> <input type="hidden" name="favo" value="a"> <input type="hidden" name="id_album" value="{{list.id}}"> </form> </tr> {% endfor %} </table>
Mon traitement dans 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 def view_album(request): if len(request.POST) > 0: if request.POST['del'] != '': id_album = request.POST['del'] delete_album = Collection.objects.get(pk=id_album) delete_album.delete() if request.POST['favo'] != False: id_album = request.POST['id_album'] chang_fav_off = Collection.objects.get(pk=id_album) chang_fav_off.is_favourite = False chang_fav_off.save() elif request.POST['favo'] != True: id_album = request.POST['id_album'] chang_fav_on = Collection.objects.get(pk=id_album) chang_fav_on.is_favourite = True chang_fav_on.save()
Pour infos :
POST['del'] renvoi un id.
POST['id_album'] renvoi un id.
request.POST['favo'] renvoi un booléen.
Merci d'avance pour votre aide, c'est mon premier cas avec plusieurs variables POST avec plusieurs formulaire, je me perds....
Partager