Comment mettre à jour une page Django sans rechargement de page?

Mon application Django affiche les données d'une base de données. Ces données changent sans intervention de l'utilisateur, c'est-à-dire derrière les scènes. Chaque fois qu'il change, j'aimerais que la page Web mette à jour les sections modifiées sans rechargement de page complète.

De toute évidence, AJAX vient à l'esprit. Lorsque la page est chargée initialement (ou manuellement, complètement rechargée plus tard), le modèle rendu charge un JavaScript qui exécute window.onload = update ("all"), la mise à jour (…) déclenche à son tour un certain nombre de demandes XMLHTTPR Qui renvoient les données qui se transforment en pièces HTML pour les sections correspondantes. Tout fonctionne bien. Au chargement initial de la page.

Maintenant, je me trouve dans une fonction Python qui enregistre un nouvel objet dans la base de données.

Comment dire au navigateur d'exécuter la mise à jour (…)?

Dois-je d'une manière ou d'une autre manière manuellement émettre une requête à une url qui est mappée à une vue qui, à son tour, rend un modèle contenant le code JavaScript pour exécuter la mise à jour (…) ??? Oh mon!

J'ai l'impression de ne pas suivre les approches habituelles. Peut-être que je suis prêt à fermer devant le problème.

Quelqu'un peut-il m'aider ?

Deux approches:

  1. Il suffit de mettre à jour la base de données et d'attendre la prochaine requête AJAX. Cela signifie qu'il devrait faire périodiquement la requête, vous devrez vous équilibrer entre l'immédiateté et la charge du serveur. Cela vous aide un peu si vous pouvez faire une requête bon marché pour vérifier s'il y a eu une mise à jour. Peut-être que cette vérification ne dépend que de memcached au lieu d'aller au DB

    • Utilisez la comète . En bref: le client effectue une requête AJAX demandant la mise à jour. Le serveur voit qu'il n'y a pas de mise à jour, donc il ne répond pas. Au lieu de cela, la connexion reste ouverte pendant longtemps. Éventuellement, la mise à jour vient et le serveur répond finalement, ou le client expire et tue la connexion. Dans ce cas, le client doit immédiatement réémettre la requête pour attendre la mise à jour.

Vous avez deux choix

  1. Demandez au sondage de naviguer avec setTimeout ()
  2. Regardez dans Comet – il s'agit d'une technique pour pousser les données du serveur vers le navigateur.

Voici un article sur Comet dans Django