Résolue

Eviter de re soumettre le formulaire - Redirection

# Django # HTML # Formulaires

Bonjour,


Pour m'amuser, j'ai essayé de rediriger après l'envoi du formulaire via le html directement avec action="{% url "" %}, et je me suis aperçu de plusieurs choses :


1) ça fonctionne (tant mieux)


2) par contre je ne vois pas la redirection quand j'inspecte la page contrairement à avec  le return HttpResponseRedirect(request.path) où il y a bien le 302


3) dans la vidéo l'url vers article/ porte le nom de "blog-post" déjà utilisé dans le blog, je l'ai donc changé car sinon la redirection ne marche pas et ça fait juste rien mais j'aurais aimé que je puisse voir l'erreur quelque part, y a-t-il un moyen de le voir ?


C'est juste pour approfondir mais sinon la vidéo est très bien et je préfère utiliser le return HttpResponseRedirect(request.path) car ça enlève définitivement le pop up alors que les redirections en html, ça permet juste de ne pas resoumettre le formulaire car on tombe sur une autre page mais y a encore le pop up d'après ce que j'ai pu voir.


Merci beaucoup,


A bientôt!


Hugo

Salut Hugo,


Dans ton point 2), tu obtiens "simplement" un GET 200 ? En gros tu court circuites la redirection ?


Pour le 3) désolé je ne suis pas sûr de comprendre, dans la vidéo tu parles du template blog/post.html ou du nom de l'url dans un fichier urls.py ?


Mais sinon je suis d'accord aussi avec toi =D redirect c'est beaucoup mieux pour l'utilisateur. Là c'est pour la vidéo que Thibault HttpResponseRedirect() tu as aussi tout simplement redirect(). Le premier n'accepte que des urls alors que le second est plus flexible, il peut prendre des vues aussi par exemple.


Bonjour,


Je souhaite connaitre les bonnes pratiques pour gérer les connexions/curseurs d'une DB dans Django.


Voici un exemple fictif de mon code actuel dans views.py et modules.py :

https://bitbucket.org/bwernerus/public/src/master/db_conn/


Django : v4.1.3

Python : v3.10

Pyodbc : v4.0.34

DB : OpenEdge Progress


Pour info, j'utilise bien les paramètres settings.py[databases] pour mes connexion MySQL mais malheureusement OpenEdge n'est géré dans Django il me semble, je passe donc par le module pyodbc.


PS : Pas d'urgence ! Ne vous précipitez pas à répondre. :)


D'avance merci pour votre aide.

Benoit

Pierre-André* désolé, je cherchais ton prénom Pacdev ;)


Hello Hugo,


pas de souci pour le pseudo ça marche aussi =D.


Du coup via le html ça ne me surprend pas que tu n'obtiennes qu'un GET 200, c'est ce que fait le action du formulaire. Peut être qu'il y a un moyen via ce formulaire de spécifier que c'est une redirection. Je vais voir avec Thibault et Thierry qui sont plus experts que moi en html.


Je vais regarder pour l'url mais souvent dans Django il ne renverra pas d'erreur si tu as 2 urls qui correspondent, il te renverra juste le premier qu'il trouve. J'ai d'ailleurs eu ce problème récemment, résolu par le communauté Stack Overflow. Je te mets le lien si cela t'intéresse.


https://stackoverflow.com/a/73776429/14823310

Salut Hugo,


Je confirme les dires de PA, le action dans un formulaire indique l'URL vers laquelle tu veux envoyer les données du formulaire et n'a donc rien à voir avec la redirection. Donc c'est normal que tu ne vois pas de 302 :)


Et concernant les 2 urls avec le même nom effectivement tu n'auras pas d'erreur car Django ne t'empêche pas d'avoir le même nom pour deux URL, donc ce n'est pas une erreur en soit (même si je ne vois pas trop dans quel cas de figure on pourrait souhaiter avoir le même nom pour 2 URL mais bon).


Bonne continuation !

D'accord, merci à tous les deux pour votre réponse ! :)

Inscris-toi

(c'est gratuit !)

Inscris-toi

Tu dois créer un compte pour participer aux discussions.

Créer un compte

Rechercher sur le site

Formulaire de contact

Inscris-toi à Docstring

Pour commencer ton apprentissage.

Tu as déjà un compte ? Connecte-toi.