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 :

Charger un template racine et l'appeler ensuite avec le système d'héritage des templates [Python 3.X]


Sujet :

Django Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Etudiant IUT informatique
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant IUT informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Par défaut Charger un template racine et l'appeler ensuite avec le système d'héritage des templates
    Bonjour,
    J'utilise django 2.0

    Je cherche un composant s'il existe dans django qui permettrait de charger un template racine (système d'héritage des templates)
    pour ne pas avoir à charger mon template racine dans chaque view qui l'utilise.
    Un exemple vaut mieux :

    Mon template de base contient mon menu de nav + le footer et quelque autre chose.
    Pour chaque page, on va réutiliser ce menu et ce footer pour ne pas avoir à l'écrire à nouveau.

    Pour charger mon template de base, j'ai besoin de données se trouvant dans la base de données.

    Et donc je cherche une solution pour ne pas charger dans une view, son contenu + celui du template de base appelé

    Merci, n'hésiter pas à demander plus d'infos, car je suis sûr qu'on ne comprendra pas mon explication ;-).

  2. #2
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2016
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2016
    Messages : 98
    Par défaut
    Code twig : Sélectionner tout - Visualiser dans une fenêtre à part
    {% extends "nom_template_de_base.html" %}

  3. #3
    Membre régulier
    Homme Profil pro
    Etudiant IUT informatique
    Inscrit en
    Juin 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Etudiant IUT informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 8
    Par défaut
    Plusieurs mois sont passés et j'ai réussi en peu de temps finalement, après avoir posté ma question à trouver la réponde que je partage avec vous aujourd'hui.

    Bien qu'en apparence la réponse donnée au-dessus puisse être juste (je me suis vraiment mal exprimé dans ma question) je ne cherchais pas cela.

    Je cherchais un mécanisme que django propose appelé "context_processors". Dans les settings d'un projet (pas d'une application d'un projet), nous retrouvons un dictionnaire appelé TEMPLATE qui contient lui-même un autre dico
    nommé context_processors.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [],
            'APP_DIRS': True,
            'OPTIONS': {
                'context_processors': [
                    'django.template.context_processors.debug',
                    'django.template.context_processors.request',
                    'django.contrib.auth.context_processors.auth',
                    'django.contrib.messages.context_processors.messages',
                    'myBookList_app.context_processors.skeleton_context',
                ],
            },
        },
    ]
    Ce dictionnaire va pour chaque template pré-charger certaine valeurs par défaut, soit pour les besoins du moteurs, soit pour ceux de l'utilisateur.
    Exemple le 'django.contrib.auth.context_processors.auth' fournit l'accès au variable d'authentification du moteur, comme pour {{ user }} sans que vous l'aillez chargé dans votre template.

    Et donc bien sûr, on peut ajouter nos propre context_processors comme suis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    def skeleton_context(request):
     
        searchForm = SearchForm()
        return {'searchForm': searchForm}
    On reçoit request en paramètre, et il faut retourner un dictionnaire.
    Là, je crée un form que j'utilise dans toutes mes pages dans la barre nav.

    Pour plus d'infos : https://docs.djangoproject.com/fr/2....RequestContext

    Voilà j'espère vous avoir été utile ! (soyez indulgent pour les éventuelles fautes d'orthographes).

    Bisous

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 25/11/2015, 10h23
  2. [WD-2010] Appeler des template.dotm depuis un userform
    Par VayLoe dans le forum VBA Word
    Réponses: 16
    Dernier message: 27/04/2011, 11h14
  3. Réponses: 3
    Dernier message: 21/10/2009, 19h28
  4. Méthode template : déclaration/définition et appel ?
    Par kidpaddle2 dans le forum Langage
    Réponses: 3
    Dernier message: 22/04/2007, 14h09
  5. Appel recursif avec template
    Par Math75 dans le forum Langage
    Réponses: 24
    Dernier message: 13/10/2005, 11h57

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