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 commun et données DB


Sujet :

Django Python

  1. #1
    Membre averti
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Par défaut Layout commun et données DB
    Bonjour à tous.

    3 ème question en 2 semaines, cela commence à faire beacoup et je m'en excuse.

    Actuellement, j'utilises une template commune pour toutes mes pages. Je lis mes pages a ma template principale avec un simple extends et des blocks.

    ex :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    {% extends "blog/layout/default.html" %}
    {% block content %}
    Si default.html - la template commune- contient du simple HTML; rien de plus simple, mais en fait, je souhaiterais y mettre du code django (concrètement, je souhaite afficher une liste de categories, celle ci étant obtenue en interrogeant la DB).

    Encore un problème basic, mais bien embétant ! Si quelqu'un avait une idée, celle-ci serait la bienvenue.

    Merci

  2. #2
    Membre averti
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Par défaut
    J'aurais du préciser que je cherche à éviter d'avoir a mettre dans chacune de mes vues ce bout de code car toute les pages l utilisent

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    allCategory =Category_article.objects.all()
    	archives = Article.objects.dates('insert_dt','month')[:10]

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Par défaut
    Pour ce genre de données 'répétitives', jette un oeil au request context et aux custom template tags.
    Si tu utilises les generic view, tu peux te servir de l'extra context.

  4. #4
    Membre averti
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Par défaut
    Merci bien, je vais voir ce que je peux faire avec le request context.
    Bonne journee !

  5. #5
    Membre averti
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Par défaut
    La solution la plus adapté dans mon cas semble donc le request context.
    J'ai trouvé plusieurs sites y faisant référence , entre autre celui-ci , mais cependant, dans mon setting.py, je n'ai pas de TEMPLATE_CONTEXT_PROCESSORS !
    Quelqu'un saurait-il pourquoi ?

    Merci

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations forums :
    Inscription : Mars 2010
    Messages : 49
    Par défaut
    Une explication rationnelle pourrait être que ... tu n'en a pas mis

  7. #7
    Membre averti
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Par défaut
    Providenz :
    Merci pour ta réponse. D'après ce que j'ai lu, lorsque django génère le fichier settings.py, il met automatiquement TEMPLATE_CONTEXT_PROCESSORS dedans. Je pensais donc que comme mon fichier ne contenait pas celui-ci, qu'il devait y avoir une différence de version ou un problème du genre.

    Je teste ça un peu plus tard et je te retiens au courant. Merci

  8. #8
    Membre confirmé

    Profil pro
    Inscrit en
    Mai 2002
    Messages
    116
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 116
    Par défaut
    Je confirme.

    Tu créés un fichier context_processors.py

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def mes_cats(request):
        mescats = Categorie.objects.all()
        return {'CATEGORIES':mescats}
    Dans ton settings.py,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    TEMPLATE_CONTEXT_PROCESSORS = (
        "django.core.context_processors.auth",
       ...
        "context_processors.mes_cats",
    )
    Dans ta vue,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    from django.template import RequestContext
    from django.shortcuts import render_to_response
     
    def home(request):
        return render_to_response('default.html', {}, context_instance = RequestContext(request))
    et dans ton template:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    {% block content %}
        {% for cat in CATEGORIES %}
            {{ cat }}
        {% endfor %}
    {% endblock %}

    Dans ton fichier context_processors, tu peux ajouter plusieurs fonctions pour bien partitionner ton code selon ce que tu veux faire. Biensur, il faut donc ajouter la fonction dans le settings.py. Tu peux aussi ajouter un fichier context_processors dans tes applis selon ce que tu fais, ce n'est qu'une question d'organisation.

  9. #9
    Membre averti
    Développeur Web
    Inscrit en
    Octobre 2010
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2010
    Messages : 21
    Par défaut
    Bonjour,

    Merci Sinclair, j'ai enfin réussi à faire ce que je voulais . Rien ne vaut un bon exemple concret.

    Merci à tous, problème résolu

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

Discussions similaires

  1. Communication de données via USB
    Par nico57600 dans le forum Langage
    Réponses: 0
    Dernier message: 10/02/2010, 18h45
  2. URL pointant vers un autre appli web et communication des données
    Par Lolitaaa dans le forum Développement Web en Java
    Réponses: 2
    Dernier message: 10/02/2010, 14h07
  3. La communication des données
    Par flaca dans le forum Powerpoint
    Réponses: 2
    Dernier message: 29/11/2007, 22h01
  4. communication des données via modem+rtc en VB6
    Par kadirov dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 06/07/2006, 11h56
  5. Réponses: 13
    Dernier message: 09/02/2006, 16h33

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