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 :

extraire données d'une bdd dans un template


Sujet :

Django Python

  1. #1
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 43
    Points : 27
    Points
    27
    Par défaut extraire données d'une bdd dans un template
    Bonjour tout le monde !

    Alors voilà je vais essayer d'être assez clair pour exposer mon problème. J'ai créer un template dans lequel il y a une zone contenant une liste de checkbox.
    Chaque checkbox correspondant à un motif.

    Ma base de données contient une table "Nomenclature" (id, typeN, codeN, libelle). Voici un extrait de la table :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    id      typeN      codeN      libelle
    1       gir          1         bla1
    2       gir          2         bla2
    3       mot          01        efgkeogr
    4       mot          02        fzefzeezf
    5       cp           29000     Brest
    .........
    Et j'aimerais que la zone affiche un checkbox avec le libelle correspondant pour chaque champ qu'il rencontre avec typeN = "mot" (c'est-à-dire "motif").

    J'ai essayé d'étudier le méthode "regroup" mais je ne sais même pas si je suis sur la bonne piste. Sinon je me doute qu'il faut faire une boucle {% for... mais j'ai essayé plein de chose et sans succès

    Merci de votre aide

    kiradeus

  2. #2
    Membre régulier
    Profil pro
    Développeur Back-End
    Inscrit en
    Septembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Septembre 2007
    Messages : 81
    Points : 106
    Points
    106
    Par défaut
    Salut
    je ne comprends pas trop ton problème mais je crois que tu peux utiliser un formulaire (cf. checkbox)

  3. #3
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 43
    Points : 27
    Points
    27
    Par défaut
    Salut malick021988 !

    Désolé de ne pas avoir été assez explicite. Voilà, j'ai une page html contenant un formulaire. Dans ce formulaire, il y a notamment un fieldset contenant des checkbox (cf piece jointe : sans titre.jpg).
    Et ma base de données contient ce que j'ai mis dans mon premier post.

    Seulement, dans mon formulaire, j'ai mis les motifs des appels en dur dans le template. Or, j'aimerais faire une boucle ( {%for .... end for %} ) à la place.

    Comme ça, si j'ajoute un autre motif d'appel dans ma bdd, et bien celui-ci s'ajoutera automatiquement dans mon template. Mais je n'y arrive pas

    J'espère que j'ai été assez clair cette fois-ci
    Merci de votre aide.

    kiradeus
    Images attachées Images attachées  

  4. #4
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Un template ne peut pas, par lui-même, accéder à la base de données. C'est ta vue qui doit extraire ces informations de la base de données, et les transmettre à ton template via son contexte.

    Dans views.py :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def my_view(request):
        nomenclatures = Nomenclature.objects.all()
        # autres choses que tu aurais déjà
        return render_to_response('mytemplate.html',
            {'nomenclatures': nomenclatures})
    Dans ton template :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    {% for nomenclature in nomenclatures %}
        <p><input type="checkbox" name="nom{{ nomenclature.id }}" /> {{ nomenclature.libelle }}</p>
    {% endfor %}
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  5. #5
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 43
    Points : 27
    Points
    27
    Par défaut
    Merci sjrd pour tes explications

    Effectivement il faut bien utiliser les vues pour accéder aux données de la base de données. Je commençais juste à comprendre le principe en relisant une x ème
    fois le djangobook.

    Merci énormément pour tes lumières, je pense que ça va beaucoup m'aider. Je met ça en application et je tiens au courant.

    Encore merci

  6. #6
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 43
    Points : 27
    Points
    27
    Par défaut
    Je viens de mettre ça en place et ça marche comme sur des roulettes ! Merci beaucoup sjrd !

    Seul petit hic, comme je m'y attendait d'ailleurs, il me met tout les libelle de la table "Nomenclature". Or, j'aimerais avoir seulement avoir ceux dont le champ "typeN" = mot. Je pense que là encore c'est bel et bien dans la vue qu'il faut que je rajoute ce critère, mais j'avoue que je ne sais pas encore comment

    Je vais chercher ça mais si propositions il y a, preneur je suis

    Merci à vous
    kiradeus

    Et bien c'est bon j'ai trouvé tout seul,, avec un peu de logique et de réflexion ça a suffit
    C'est ça qui est bien avec django. Pour ceux que ça intéresse :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    from django.db.models import Q
     
    def myview(request):
        filtre_motif = (Q(typeN='mot'))
        motif = Nomenclature.objects.filter(filtre_motif)
        return render_to_response('myappli/mytemplate.html',
            {'motif': motif}, context_instance=RequestContext(request))
    Problème résolu !

  7. #7
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Euh ouais, pas besoin de passer par un objet Q pour si peu. J'écrirais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    motif = Nomenclature.objects.filter(typeN = 'mot')
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  8. #8
    Nouveau membre du Club
    Inscrit en
    Janvier 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Janvier 2010
    Messages : 43
    Points : 27
    Points
    27
    Par défaut
    Bonjour sjrd !

    Oui tu as tout à fait raison il n'y a vraiment pas besoin de passer par un objet Q.
    J'ai vu ça dans un exemple donc j'ai cru que c'était nécessaire

    En tout cas merci pour tes précisions.

    kiradeus

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

Discussions similaires

  1. [MySQL] Utiliser des données d'une BDD dans un lien pour image
    Par clairetj dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/06/2015, 15h48
  2. [1.x] Récupérer des données d'une bdd dans une liste déroulante
    Par bMallo dans le forum Symfony
    Réponses: 4
    Dernier message: 02/08/2012, 10h48
  3. intégrer des données d'une BDD dans script
    Par yon91 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 10/04/2012, 14h56
  4. EXT-GWT: afficher les données d'une bdd dans une grid
    Par baya1 dans le forum GWT et Vaadin
    Réponses: 9
    Dernier message: 20/11/2011, 00h14
  5. Affichage des données d'une bdd dans un formulaire
    Par Shekhmet dans le forum Langage
    Réponses: 5
    Dernier message: 04/04/2006, 19h27

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