Bonjour,
Pour vous présenter simplement mon problème, j'ai une structure de données telle que :
1 2 3 4 5 6 7 8 9 | my_dict = { 'key1': { 'key2': ['element 1', 'element 2', 'element n'], 'key3': { 'key4': ['element 4'] }, }, 'key5': ['element 5'] } |
J'aimerais la représenter en HTML comme ceci :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <ul> <li>key1</li> <ul> <li>key2</li> <ul> <li>element 1</li> <li>element 2</li> <li>element n</li> </ul> <li>key 4</li> <ul> <li>element 4</li> </ul> </ul> <li>key 5</li> <ul> <li>element 5</li> </ul> </ul> |
J'essaie de traduire cela en Jinja par :
1 2 3 4 5 6 7 8 9 10 | {% for key in elements_list.keys() recursive %} {% if elements_list.keys() is mapping %} <li>{{ key }}</li> <ul>{{ loop(elements_list[key]) }}</ul> {% else %} {% for element in elements_list[key] %} <li>{{ element }}</li> {% endfor %} {% endif %} {% endfor %} |
En résumé, à chaque itération, si je tombe sur un dictionnaire, je réitère la boucle de manière récursive. Dans le cas contraire, j'ai affaire à une liste (Si vous connaissez le mot-clé pour détecter qu'il s'agit d'une liste en Jinja, je suis preneur) et j'itère tout simplement dessus.
Je n'obtiens évidemment pas le résultat escompté. Ce code affiche uniquement la première clef de niveau un, et la récursivité n'a pas lieu. En résumé, j'ai :
1 2 3 4 | <ul> <li>key 1</li> <ul></ul> </ul> |
Merci par avance aux âmes charitables qui se pencheront sur mon problème.
+0
-0