IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

Layout global pour les vues


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut Layout global pour les vues
    Salut à toutes et tous

    Je découvre petit à petit Django... Une petite merveille que ce framework ! Mais une question me reste toutefois:
    En php, j'avais pour habitude de créer un template "global", pour définir la structure de base du site:
    - header
    - footer
    - menu
    - etc.
    En gros, tout ce qui concerne le site entier, et dont la "vue", comme nommé dans Django, ne devrait pas être au courant.
    Je pouvais alors intégrer, dans ce template générique, la sortie de la vue.

    J'ai bien trouvé le tag "extends" pour le moteur de template, mais je trouve gênant de dépendre d'un template parent, puisque ça viole un peu les lois de la réutilisabilité... Existe-t-il une autre solution ?

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Salut,

    je trouve gênant de dépendre d'un template parent, puisque ça viole un peu les lois de la réutilisabilité...
    Dans la philosophie de Django, il faut faire une analogie entre le système de template et le système d'heritage de la POO, tu peux faire hériter ton template d'un template parent et juste redefinir les sections (block) qui t'interessent.

    extrait du djangobook:
    In essence, template inheritance lets you build a base “skeleton” template that contains all the common parts of your site and defines “blocks” that child templates can override.
    L'heritage des templates vous permet de construire un template "squelette" qui contient toutes les parties communes de votre site et définit des "blocks" que les templates enfants peuvent ré-écrire
    En plus de ce mecanisme, il est possible d'utiliser le tag {% include %} pour insérer le rendu d'un template dans un autre.

  3. #3
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Hello

    Oui, c'est une philosophie qui se vaut, et qui est très logique finalement. Mais malgré tout je la trouve un peu trop contraignante

    Mais j'ai trouvé une solution à mon souci: le middleware.
    La méthode process_response me permet de modifier le contenu d'une réponse, et c'est exactement ce qu'il me fallait
    Je peux alors faire un léger parsing pour récupérer titre, contenu et autres balises importantes pour les intégrer à un layout global. L'idée d'origine vient de SiteMesh, et je la trouve très réussie

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Droit d'utilisateur pour les vues
    Par wiss85 dans le forum Administration
    Réponses: 4
    Dernier message: 05/05/2011, 22h12
  2. [1.x] Un layout différent pour les mobiles
    Par Fused dans le forum Symfony
    Réponses: 2
    Dernier message: 14/04/2011, 15h33
  3. [Débutant] Variables globales pour les fonctions d'un module
    Par guillooom dans le forum Général Python
    Réponses: 6
    Dernier message: 25/03/2011, 15h25
  4. [Joomla!] Quel est le layout utilisé pour les annonces sur le site officiel?
    Par _skip dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 0
    Dernier message: 07/06/2010, 11h40
  5. Helper pour les vues ou les controllers
    Par k o D dans le forum MVC
    Réponses: 3
    Dernier message: 25/09/2008, 12h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo