- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
- Formations
- conversion_path Parcours & Formations
- science Projets
- data_object Exercices de code
- psychology Exercices IA
- quiz Quiz
- Articles
- rss_feed Blog
- sort_by_alpha Glossaire
- menu_book Guides
- help_center FAQ
- media_link Ressources
- Communauté
- groups La communauté
- forum Questions
- live_tv Mentorats
- science Projets mensuels
Inscris-toi
(c'est gratuit !)
Un compte est nécessaire pour participer aux discussions.
Créer un compte personlive_helpToutes les questions
De716
5 mars 2024 - 05 mars 2024 à 9:37
checkConversation résolue
3 réponses
HttpResponseRedirect Vs redirect
Salut la team, est-ce qu'on pourrait utiliser simplement la fonction `redirect` à la place de `HttpResponseRedirect`? par exemple en faisant : `return redirect("signup") `quand on a choisi `name="signup"` pour l'url …
00:00:00 :Vous avez peut-être remarqué que lorsque l'on soumet un formulaire et que l'on passedonc dans cette structure conditionnelle ici, avec la récupération du formulaire en passantles données de post et ensuite la création de nos données dans notre base de données,que si vous rafraîchissez la page vous avez un pop-up qui apparaît. Donc je vais vous
00:00:16 :montrer ce que ça donne. Là je souhaite créer un article, donc je clique sur créer et si jevais voir dans ma base de données, donc j'actualise, j'ai bien mon article de test qui a été créé.
00:00:25 :Le problème c'est que si sur cette page maintenant je rafraîchis la page, donc je clique ici pourrafraîchir la page dans mon navigateur, vous avez peut-être déjà vu ce pop-up qui apparaît,qui me demande si je souhaite resoumettre le formulaire. Donc confirm from resubmission,
00:00:39 :donc ça c'est un pop-up qui est assez connu des développeurs, qui en fait est là pour éviter quepar misgarde on resoumette des informations. Puisque là en fait actuellement si je clique
00:00:49 :sur continue, et bien en fait ça va recréer un nouvel article. Donc j'ai le choix d'appuyersur cancel ici, donc d'annuler la resoumission du formulaire et de ne pas rafraîchir la page.
00:00:58 :Donc si je fais ça et que je reviens dans mon interface, là vous voyez qu'on n'a pas créé unnouvel article. Par contre si j'actualise la page et que je clique sur continue, là en fait on a
00:01:06 :réexécuté cette page avec les données du formulaire. Et donc si je viens dans mon interfaced'administration ici et que j'actualise, là on voit qu'on a bien un deuxième article test. Donc
00:01:15 :qu'est-ce qu'on peut faire pour éviter ce problème ? Ce qu'on peut faire c'est faire une redirection,donc rediriger vers cette page, donc la page articles, ce qui va avoir pour effet de ne pasgarder ces données et de nous éviter donc cette possibilité de resoumettre le formulaire et donc
00:01:29 :d'avoir ce pop-up et donc d'éviter également ces articles dupliqués qui puissent apparaître dansnotre base de données. Donc ce qu'on va faire c'est qu'on va importer ici depuis django.http,
00:01:38 :à côté du http response on va importer le http response redirect. Donc ça va nous permettre defaire une redirection. Et ici donc on va rediriger notre vue, donc on va faire un return de http
00:01:49 :response redirect et on va rediriger tout simplement vers request.path. Donc sur l'objetrequest vous avez un attribut path qui correspond à l'url à laquelle vous êtes en train d'accéderet donc on va tout simplement rediriger vers cette vue et donc ça va nous permettre d'accéder denouveau à cette interface ici, donc à cette interface pour créer un article mais sans les
00:02:07 :données du formulaire et donc sans cette possibilité de resoumettre les données. Donc là je vaisactualiser ici mon article et je vais mettre un autre article. Je rentre une date, un auteur et
00:02:20 :je vais essayer donc de créer mon article. Donc je clique sur créer. Là vous voyez qu'on estbien redirigé vers la page. Si je vais voir dans le run ici et que je descends donc tout en bas dans
00:02:28 :mon log, vous voyez qu'on a bien après le post ici un status code donc pour le html de 302. Donc302 c'est une redirection donc ça veut dire qu'on a bien effectué notre requête post qui nous apermis de créer l'article dans la base de données et ensuite on a une redirection qui s'effectue
00:02:44 :avec cette fois-ci une méthode get et qui nous renvoie donc vers l'article. Donc cette fois-ci sij'appuie sur le bouton pour actualiser la page vous voyez que là on refait tout simplement unerequête get donc on ne va pas refaire une requête post et donc ça nous évite d'avoir ce pop-up qui
00:02:58 :nous demande de resoumettre les données du formulaire ou non donc qui nous donne le choixpuisqu'ici on n'a tout simplement pas de requête post. Donc on est tranquille et si on va voir au
00:03:06 :niveau de la base de données j'ai bien mon article qui a été créé mais je n'en ai pas de duplicatpuisque là on n'a pas soumis d'autres formulaires. Donc voilà comment faire pour éviter d'avoir ce
00:03:15 :pop-up puisque c'est assez gênant c'est un pop-up qui peut apparaître également au niveau de votresite donc quand quelqu'un est sur votre site et qu'il soumet un formulaire par exemple un formulairede contact ou quelque chose du genre si vous ne faites pas cette redirection ici et bien si
Ce n'est pas fini...
✋
Tu as complété % du parcours 🔥
Termine l'intégralité de la formation pour pouvoir débloquer ton attestation de réussite.