Comment puis-je rediriger dans Django avec le contexte?
J'ai une vue qui valide et enregistre un formulaire. Après l'enregistrement du formulaire, je voudrais rediriger les requêtes vers un list_object vue avec un message de succès "pour le client xyz a été correctement mis à jour..."
HttpResponseRedirect ne semble pas comme il l'aurait fait le travail, car il ne dispose que d'un argument pour l'url, pas moyen de passer un dictionnaire avec elle.
J'ai essayé de modifier mon wrapper pour object_list de prendre un dict comme un paramètre qui a le contexte nécessaire. J'ai le retour d'un appel de ce wrapper de l'intérieur de la vue qui sauve la forme. Toutefois, lorsque la page est affichée, l'url est "/customer_form/"plutôt que" /list_customers/'. J'ai essayé de modifier l'objet de la requête, avant de passer à l'object_list wrapper, mais cela ne fonctionne pas.
Grâce.
- Note pour les futurs chercheurs: assurez-vous de lire sur le passé de la accepté de répondre, comme il est maintenant obsolète.
Vous devez vous connecter pour publier un commentaire.
Veuillez noter que la réponse proposée ici n'est applicable qu'à Django < 1.2:
Vous avez le contrôle sur le point de vue que vous rediriger vers? Dans ce cas, vous pouvez sauvegarder le contexte de la session avant de la rediriger. La vue cible peut récupérer le contexte (et supprimer) à partir de la session et de l'utiliser pour rendre le modèle.
Si votre seulement exigence est d'afficher un message, puis il y a une meilleure façon de le faire. Votre premier point de vue peut créer un message pour le courant à l'aide
auth
et la deuxième afficher lire et de le supprimer. Quelque chose comme ceci:Messages sont enregistrés dans la base de données. Cela signifie que vous pouvez y accéder même après une redirection. Ils sont lus automatiquement et supprimés sur le rendu du modèle. Vous devrez utiliser
RequestContext
pour que cela fonctionne.Pour Django => 1.2 lire la réponse impliquant des messages
request.user.message_set
a été dépréciée dans Django 1.2 et a été supprimé depuis Django 1.4, le message de cadre devrait être utilisé à la place.Messages peuvent ensuite être affichées sur le modèle:
À développer Antoine réponse utile: si vous voulez traiter les messages dans vos vues module, plutôt que sur le modèle:
J'ai trouvé le suivant à travailler si plus qu'un message doit être ajouté à la redirection:
Voir aussi
comment passer des données de contexte avec django rediriger fonction?