web-dev-qa-db-ja.com

Flask Template-For Loop Iteration key:value

Flask Jinja forループを含むHTMLテンプレートがあり、テーブルを生成して次のようになります。

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

さまざまな長さ/キーのドキュメントを反復処理し、テーブルの各行をキーと値として提示しようとしています。私のPythonコードでは、シェルで望ましい応答を持っているこれを持っています:

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

しかし、Flaskでは、すべての行を正しくリストするアイテムを取得しますが、

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

値を生成していません。単一引用符を使用して、または使用せずに試しました。これは可能ですか?

9
Johnny John Boy

これがエラーの原因です。

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

内部に{{ }}は必要ありません。それだけでする必要があります:

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

詳細については、 Jinja のドキュメントを参照してください。 Jinja2でステートメント(iffor)を作成するときは{% statement %}を使用しますが、変数にアクセスするときは{{ variable }}を使用します。

7
kemis

それは解決策です

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