Elements persistents entre pages Django (recharchement partiel)

Le problème exposé dans ce sujet a été résolu.

Bonjour,

J’ai pour objectif de faire une site avec Django, j’ai déjà quelques connaissances avec, mais je bute pour commencer ce projet.

Il me faudra une partie de la page web gérée "normalement" avec Django, et une autre partie qui reste persistente entre les différentes pages (url), càd qui ne se recharge pas à chaque changement d’URL, garde son état, typiquement la lecture d’une vidéo ou d’un son.

J’arrive pas trop à trouver mon bonheur sur le web (surement parce que j’ai pas le vocabulaire pour exprimer ce besoin efficacement).

Les seuls résultats que j’ai trouvé c’est d’utiliser des iframes, une pour la partie normale et une pour la partie persistente avec chacune des routes qui leurs sont associées. Mais je sais que l’utilisation des iframes est parfois considérée comme une mauvaise pratique selon les utilisations (EDIT : après coup je ne pense pas que ça marche en plus, en tout cas je vois pas comment gérer ça niveau URL)

Je voulais donc savoir si cette architecture est bonne, et sinon, si vous avez des alternatives plus convainquantes / modernes à me proposer :)

Merci ! :)

+0 -0

Je ne pense pas que ce soit possible de laisser une vidéo en lecture sans interruption avec l’approche traditionnelle, à savoir le serveur qui génère une page à chaque requête.

L’approche utilisée pour ce faire est toute autre, il s’agit des SPA. Il s’agit en fait d’une seule page HTML, laquelle modifie son état (et même l’URL) toute seule au gré des interactions de l’utilisateur grâce au JS. En fait, le JS va simuler le fait qu’il y a plusieurs pages, même si ce n’est pas vrai. Souvent, cela ne se fait pas en JS pur, mais à l’aide d’un framework JS. Tu peux te renseigner sur les SPA (Single-Page Application). C’est l’approche utilisées par YouTube et Twitch pour que le mini player continue la lecture alors même que tu "changes" de page.

Attention, cependant, cette architecture nécessitera certainement de revoir presque l’intégralité de ton projet… Le but ici est de découpler totalement ton backend géré par Django et ton frontend géré par le JavaScript, s’appuyant sur l’API fournie par Django.

Cela est nécessaire si tu souhaites garder un état sans la moindre interruption, donc par exemple pour une vidéo, une musique, une barre de progression, … En revanche, si tu as besoin d’un état persistent à travers les requêtes mais sans le besoin de non-interruption, tu peux bien-sûr rester dans l’approche "traditionnelle". Par exemple, si tu veux maintenir le panier client dans une application de shopping, ou bien l’état des questions déjà répondues dans un sondage, etc. Pour cela, je connais deux approches :

  • dans les cookies, gérés par Django et accessible au moment du rendu des templates
  • dans le localStorage, géré par le JS client
+2 -0

Merci ! Ouais je connais les SPA, mais dans l’idéal je voulais eviter cela. Au final, après quelques recherches en plus ça me semble aussi impossible. Je vais du coup probablement gérer le back avec une API Django et le front avec Angular.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte