django afficher un message après le POST soumettre le formulaire
J'ai une page avec un formulaire POST, qui ont un jeu d'action à certaines url.
j'.e assumer cette url de la page est /form_url/
:
..
La vue dans /submit_url/
prendre soin de la forme des données. Après cela, je veux retourner à la même page que le formulaire avec un message de succès.
Dans la vue que prendre soin pour le formulaire POST, j'utilise HttpResponseRedirect
, afin de "nettoyer" les données d'un formulaire dans le navigateur.
Mais de cette façon je ne peux pas afficher un message dans le formulaire de la page, sauf si je fais quelque chose comme:
return HttpResponseRedirect("/form_url/?success=1")
et ensuite, vérifiez ce paramètre dans le modèle. Je n'aime pas cette manière, car si l'utilisateur actualise la page, il va quand même voir le message de réussite.
J'ai remarqué que dans django admin du site, de le supprimer/ajouter des objets de n'utiliser la redirection après le POST soumettre, et continue à afficher un message de réussite en quelque sorte.
Comment?
Je l'ai déjà brièvement vu django "messagerie" de l'app, mais je veux savoir comment il fonctionne..
OriginalL'auteur user3599803 | 2015-02-25
Vous devez vous connecter pour publier un commentaire.
L'admin de django utilise
django.contrib.messages
, vous l'utilisez comme ceci:De votre point de vue:
Et dans vos modèles:
OriginalL'auteur damio
Django messages cadre stocke les messages dans la session ou cookie (cela dépend de la backend de stockage).
OriginalL'auteur catavaran
Vous n'avez pas besoin de faire une redirection pour effacer les données du formulaire. Tout ce que vous devez faire est de re-créer une instance de la forme:
Si l'utilisateur actualise la page, ils vont lancer une requête GET, et
success
seraFalse
. De toute façon, le formulaire sera indépendant sur un GET ou un POST.Si vous tirer parti de l' les messages de cadre, vous aurez toujours besoin d'ajouter une condition dans le modèle pour afficher les messages s'ils existent ou non.
Vous n'avez pas vraiment beaucoup de choix ici. Vous avez besoin soit d'un problème de redirection et de passer le paramètre de chaîne de requête, ou si vous devez utiliser un message/valeur de session.
Le django message app effacer les données de la session, après est-il utilisé ? Car il n'est pas nécessaire d'enregistrer la session après je l'affiche.
Oui. Chaque message n'est affiché qu'une fois par cycle de la demande.
OriginalL'auteur Brandon
https://docs.djangoproject.com/en/1.11/ref/contrib/messages/
OriginalL'auteur Asif