2010-04-05 3 views
1

J'ai une application avec une page interstitielle pour tenir l'utilisateur pendant qu'une opération intensive s'exécute en arrière-plan (cela prend de 30 secondes à 1 minute). Une fois l'opération terminée, l'utilisateur est redirigé vers la page de résultats.Comment ignorer interstitiel dans une vue django si un utilisateur appuie sur le bouton Précédent?

Une fois sur la page de résultats, le comportement des utilisateurs est typique de frapper le bouton « retour » pour effectuer l'opération sur une entrée différente réglée. Cependant, le bouton de retour les prend à l'interstitiel, pas le formulaire original. Le comportement souhaité est de revenir au formulaire d'origine, en ignorant complètement l'interstitiel. Je voudrais que ce soit le comportement par défaut si l'utilisateur va à la page interstitielle de n'importe où mais le formulaire d'origine.

Je pensais que je pourrais créer cela en utilisant le décorateur de fonction @never_cache à mon avis pour l'interstitiel, et la logique basée sur request.META['HTTP_REFERER'], mais la page ne les respecte pas. Le bouton de retour du navigateur l'emporte toujours sur ce comportement.

Des idées pour résoudre ce problème?

+0

Et si vous ajoutiez un bouton à la page de résultats pour revenir au formulaire? Ou cela ne surmonterait-il pas l'envie des utilisateurs d'utiliser le bouton «retour»? –

+0

Il ne serait probablement pas limiter le problème, mais j'aime l'idée. :) Malheureusement, cela ne résout pas le problème principal de savoir comment django doit faire attention à la mise en cache et au bouton de retour et comment programmer la logique pour cela. –

+0

Empêcher la mise en cache d'une page ne signifie pas qu'elle n'est pas là. Le bouton de retour va dans l'historique et obtient l'URL qui est avant la page en cours ... et dans votre cas, c'est l'interstitiel. Ainsi, ce que vous faites est d'empêcher le navigateur de mettre en cache la page et ainsi, quand un utilisateur appuie sur le bouton de retour, il est téléchargé à nouveau au lieu d'être retiré du cache. –

Répondre

2

Comment gardez-vous la page interstitielle d'entrer dans le flux? Élimine-le. Je ne suis que récemment en train d'envelopper AJAX, alors j'aimerais pouvoir vous donner une réponse plus concrète, mais l'approche générale est d'utiliser quelque chose comme jQuery pour remplacer le contenu du formulaire <div> après l'envoi d'un "hé , Je travaille ici "indication, puis un chargement de la nouvelle page lorsque vous êtes prêt.

jQuery très gentiment un joint paramètre indésirable unique à certaines demandes de contrecarrer explicitement la mise en cache des pages volatiles.

Questions connexes