web-dev-qa-db-fra.com

Flask Template - For Loop Iteration key: value

J'ai un modèle HTML avec une boucle Flask Jinja pour elle qui génère une table et ressemble à:

<tbody>
  {% for segment in segment_details %}
    <tr>
      <td>{{segment}}</td>
      <td>{{segment_details['{{segment}}']}}</td>
    </tr>
  {% endfor %}
</tbody>

J'essaie de parcourir un document de longueur/clés variables et de présenter chaque ligne du tableau comme clé et valeur. Dans mon Python j'ai ce qui a la réponse souhaitée dans le Shell:

        for item in segment_details:
            print(item, segment_details[item])

Mais dans Flask j'obtiens l'élément listant correctement toutes les lignes sauf le

{{segment_details['{{segment}}']}}

Ne produit aucune valeur, j'ai essayé avec et sans les guillemets simples. Est-ce possible?

9
Johnny John Boy

Voici où se trouve votre erreur:

<td>{{segment_details['{{segment}}']}}</td>

Il n'y a pas besoin de {{ }} à l'intérieur. Cela devrait être juste:

<td>{{segment_details[segment]}}</td>

Pour plus d'informations, consultez la documentation de Jinja . Lorsque vous écrivez une instruction (if, for) dans Jinja2 tu utilises {% statement %} mais lorsque vous accédez à une variable, utilisez simplement {{ variable }}.

7
kemis

c'est une solution

<tbody>
  {% for key, segment in segment_details.items() %}
    <tr>
      <td>{{ key }}</td>
      <td>{{ segment }}</td>
    </tr>
  {% endfor %}
</tbody>