Django-fr

Forum

#1 25-10-2013 17:23:53

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

construction de menu recursive

Bonjour
je doit afficher des categories en menu ou liste depuis une table Rubrique,
j'utilise
<ul>
    <lil>libelé parent 1</li>
        <ul>
            <li>sous cat</li>
            <li>sous cat</li>
        </ul>
     <li>libelé parent 2</li>
        <ul>
            <li>sous cat</li>
            <li>sous cat</li>
            <ul>
                    <li>sous sous cat</li>
                    <li>sous sous cat</li>
            </ul>
            <li>sous cat</li>
            <li>sous cat</li>
         </ul>
     </ul>

  la table a trois colonne

code rub ; libellé; code_parent
"ATLHG";"TEE-SHIRTS";"ATL"
"ATLJZ";"PARKAS";"ATL"
"BIW";"CATALOGUE OUTIFRANCE";"RACINE"
"BIW01";"EQUIPEMENTS D'ATELIER  : ETABLIS, TRETEAUX, ECHELLES";"BIW"
"BIW0101";"ETABLIS BOIS";"BIW01"
"BIW0102";"ETABLIS METALLIQUES";"BIW01"
"BIW0103";"CONCEPT MODULAIRE";"BIW01"
"BIW0104";"TABLES DE METIER";"BIW01"
"BIW0105";"TRETEAU";"BIW01"
"BIW0106";"ECHELLES";"BIW01"
"BIW0107";"ESCABEAUX";"BIW01"
"BIW0108";"ECHAFAUDAGE";"BIW01"
"BIW02";"RANGEMENTS : BOÎTES A OUTILS, POCHES CEINTURE";"BIW"
"BIW0201";"SERVANTES A OUTILS";"BIW02"

c'est surement un problème qui semble simple mais qui me demontre que je
suis un gros boulet...

comment faire dans les template django ?
faut t'il préparer les données depuis la requete ?

T.

Hors ligne

#2 25-10-2013 18:07:05

Keabard
Membre
Inscription : 12-09-2011
Messages : 5

Re : construction de menu recursive

Salut à toi,

le mieux serait que tu prépares les données dans ton views.py sous la
forme d'une liste de liste :

data = [
                 ["ATLHG","TEE-SHIRTS","ATL"],
                 ["ATLJZ","PARKAS","ATL"],
                 ["BIW","CATALOGUE OUTIFRANCE","RACINE"],
                 ....
                 ["BIW02","RANGEMENTS : BOÎTES A OUTILS, POCHES
CEINTURE","BIW"],
                 ["BIW0201","SERVANTES A OUTILS","BIW02"]
             ]

Après tu fais une boucle imbriquée dans ton template django dans la
manière suivante

<ul>
     {% for cat in data %}
         <li><ul>
         {% for sub_cat in cat %}
              <li>{{ sub_cat }}</li>
         {% endfor %}
         </ul></li>
</ul>

Si les données se complexifient tu peux passer par des dictionnaires au
lieu d'une simple liste de listes. Ça sera plus propre et plus facile smile

data = [
                 {"code_rub" : "ATLHG",
                   "libelle" : "TEE-SHIRTS",
                   "code_parent" : "ATL"},
                 {"code_rub" : "ATLJZ",
                   "libelle" : "PARKAS",
                   "code_parent" : "ATL"}
                  ...
             ]

Si jamais j'ai mal compris ton problème n'hésite pas à le dire smile

Keabard


On 25/10/2013 18:23, Tonton wrote:
> Bonjour
> je doit afficher des categories en menu ou liste depuis une table
> Rubrique, j'utilise
> <ul>
>     <lil>libelé parent 1</li>
>         <ul>
>             <li>sous cat</li>
>             <li>sous cat</li>
>         </ul>
>      <li>libelé parent 2</li>
>         <ul>
>             <li>sous cat</li>
>             <li>sous cat</li>
>             <ul>
>                     <li>sous sous cat</li>
>                     <li>sous sous cat</li>
>             </ul>
>             <li>sous cat</li>
>             <li>sous cat</li>
>          </ul>
>      </ul>
>
>   la table a trois colonne
>
> code rub ; libellé; code_parent
> "ATLHG";"TEE-SHIRTS";"ATL"
> "ATLJZ";"PARKAS";"ATL"
> "BIW";"CATALOGUE OUTIFRANCE";"RACINE"
> "BIW01";"EQUIPEMENTS D'ATELIER  : ETABLIS, TRETEAUX, ECHELLES";"BIW"
> "BIW0101";"ETABLIS BOIS";"BIW01"
> "BIW0102";"ETABLIS METALLIQUES";"BIW01"
> "BIW0103";"CONCEPT MODULAIRE";"BIW01"
> "BIW0104";"TABLES DE METIER";"BIW01"
> "BIW0105";"TRETEAU";"BIW01"
> "BIW0106";"ECHELLES";"BIW01"
> "BIW0107";"ESCABEAUX";"BIW01"
> "BIW0108";"ECHAFAUDAGE";"BIW01"
> "BIW02";"RANGEMENTS : BOÎTES A OUTILS, POCHES CEINTURE";"BIW"
> "BIW0201";"SERVANTES A OUTILS";"BIW02"
>
> c'est surement un problème qui semble simple mais qui me demontre que
> je suis un gros boulet...
>
> comment faire dans les template django ?
> faut t'il préparer les données depuis la requete ?
>
> T.
>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django

Hors ligne

#3 25-10-2013 21:48:14

Nicolas Steinmetz
Membre
Inscription : 11-08-2010
Messages : 96

Re : construction de menu recursive

Le 25 octobre 2013 18:23, Tonton <to.tonton _AT_ gmail.com> a écrit :

> Bonjour
> je doit afficher des categories en menu ou liste depuis une table
> Rubrique, j'utilise
>

Je dérive un peu la réponse, mais as-tu regardé du coté de django-mptt qui
permet de gérer des arborescences finement ?

Nicolas

Hors ligne

#4 26-10-2013 16:22:43

Tonton
Membre
Inscription : 20-09-2010
Messages : 75

Re : construction de menu recursive

merci de vos réponse
J'ai remplacer ma demande par un affichage par regroupement de categorie et
de la jax

Je regarderai django mptt qui semble bien aller avec le besoin que j'avais

T.


2013/10/25 Nicolas Steinmetz <nsteinmetz _AT_ gmail.com>

> Le 25 octobre 2013 18:23, Tonton <to.tonton _AT_ gmail.com> a écrit :
>
> Bonjour
>> je doit afficher des categories en menu ou liste depuis une table
>> Rubrique, j'utilise
>>
>
> Je dérive un peu la réponse, mais as-tu regardé du coté de django-mptt qui
> permet de gérer des arborescences finement ?
>
> Nicolas
> --
> Nicolas Steinmetz
> http://www.steinmetz.fr - http://nicolas.steinmetz.fr/
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

#5 27-10-2013 10:08:42

David H.
Membre
Inscription : 21-07-2016
Messages : 1

Re : construction de menu recursive

Le 25/10/13 18:23, Tonton a écrit :
> Bonjour
> je doit afficher des categories en menu ou liste depuis une table Rubrique,
> j'utilise
> <ul>
>     <lil>libelé parent 1</li>
>         <ul>
>             <li>sous cat</li>
>             <li>sous cat</li>
>         </ul>
>      <li>libelé parent 2</li>
>         <ul>
>             <li>sous cat</li>
>             <li>sous cat</li>
>             <ul>
>                     <li>sous sous cat</li>
>                     <li>sous sous cat</li>
>             </ul>
>             <li>sous cat</li>
>             <li>sous cat</li>
>          </ul>
>      </ul>
>
>   la table a trois colonne
>
> code rub ; libellé; code_parent
> "ATLHG";"TEE-SHIRTS";"ATL"
> "ATLJZ";"PARKAS";"ATL"
> "BIW";"CATALOGUE OUTIFRANCE";"RACINE"
> "BIW01";"EQUIPEMENTS D'ATELIER  : ETABLIS, TRETEAUX, ECHELLES";"BIW"
> "BIW0101";"ETABLIS BOIS";"BIW01"
> "BIW0102";"ETABLIS METALLIQUES";"BIW01"
> "BIW0103";"CONCEPT MODULAIRE";"BIW01"
> "BIW0104";"TABLES DE METIER";"BIW01"
> "BIW0105";"TRETEAU";"BIW01"
> "BIW0106";"ECHELLES";"BIW01"
> "BIW0107";"ESCABEAUX";"BIW01"
> "BIW0108";"ECHAFAUDAGE";"BIW01"
> "BIW02";"RANGEMENTS : BOÎTES A OUTILS, POCHES CEINTURE";"BIW"
> "BIW0201";"SERVANTES A OUTILS";"BIW02"
>
> c'est surement un problème qui semble simple mais qui me demontre que je
> suis un gros boulet...
>
> comment faire dans les template django ?
> faut t'il préparer les données depuis la requete ?
>
> T.
>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
Pour ce genre dechoses, je conseil de faire un tour ici :
http://sqlpro.developpez.com/cours/arborescence/

ça peut paraitre, complique, mais pas vraiment. Seul l'ajout /
déplacement / suppression nécessitent un peu de gym.

L'avantage, c'est que tu peux avoir un niveau illimite de catégories, et
à l'affiche, ce ne sera qu'un simple select pour tout récupérer !

Hors ligne

Pied de page des forums