pour ce dictionnaire avec ce contrôleur Flask
projects = {
'life-calc':{'url':'life-calc',
'title': 'Life Calculator'},
'text-game':{'url':'text-game',
'title':'Text Adventure'},
'fill-it-up':{'url':'fill-it-up',
'title':'Fill It Up'},
'rock-paper-scissors':{'url':'rock-paper-scissors',
'title':'Rock, Paper, Scissors'},
'bubble-popper':{'url':'bubble-popper',
'title':'Bubble Popper'}
}
@app.route('/')
def index():
return render_template("index.html",
projects = projects)
et le modèle en tant que tel
<h1>
List of My Projects
</h1>
<ol>
<li>
<a href = "life-calc">Life Calculator</a>
</li>
<li>
<a href = "text-game">Adventure Game</a>
</li>
<li>
<a href = "fill-it-up">Fill It Up</a>
</li>
<li>
<a href = "rock-paper-scissors">Rock Paper Scissors</a>
</li>
<li>
<a href = "bubble-popper">Bubble Popper</a>
</li>
</ol>
<p>test section below</p>
<ol>
{% for project in projects %}
<li><a href = "{{ project['url'] }}">{{ project['title'] }}</a> </li>
{% endfor %}
</ol>
{% endblock %}
Comment puis-je accéder aux éléments du dict pour imprimer une liste de mes projets comme dans le HTML au dessus du test?
J'ai résolu mon propre problème avec l'aide de Rendu d'un python dict dans Jinja2/Werkzeug Le bloc de modèle doit être
{% for key, value in projects.iteritems() %}
<li><a href={{value['url']}}>{{value['title']}}</a></li>
{% endfor %}
Mais je suis toujours curieux de savoir comment accéder à d'autres dictionnaires imbriqués, et si c'est la façon la plus intelligente de créer un menu simple.
Je pense que vous voulez savoir comment accéder au dict imbriqué dans le modèle
Si vous pensez que j'ai votre question
Généralement, c'est la façon d'accéder aux éléments de dictionnaire imbriqués dans le dictionnaire.
forloop
que ce soit la liste ou le dict.Ici, je donne juste un exemple générique à ma façon pour votre compréhension
parent_dict = {1: {'A':'val1','B':'val2'}, 2:{'C':'val3','D':'val4'}}
{% for key,parent_dict_item in parent_dict.items() %}
{% for key2, nested_value in parent_dict_item.items() %}
<li><a href = "{{ nested_value }}">{{ nested_value }}</a> </li>
{% endfor %}
{% endfor %}
<li><a href="val1">val1</a> </li>
<li><a href="val2">val2</a> </li>
<li><a href="val3">val3</a> </li>
<li><a href="val4">val4</a> </li>
Au lieu d'étendre la clé et la valeur dans la boucle, vous pouvez également utiliser la clé pour référencer l'élément dans le dict lui-même:
{% for project in projects %}
<li><a href = "{{ projects[project].url }}">{{ projects[project].title }}</a> </li>
{% endfor %}