QA@IT

python flaskにおいてjinja2でリストの値渡し方

345 PV

python flaskを使用して、テンプレート内でfor文を使いたいのですが、値の渡し方がよく分かりません。

jinja2のドキュメントにこのような文があります

シーケンス内の各項目をループします。
たとえば、usersという変数に指定されたユーザーのリストを表示するには、次のようにします。

<h1>Members</h1>
<ul>
{% for user in users %}
  <li>{‌{ user.username|e }}</li>
{% endfor %}
</ul>

usersという変数に指定されたユーザ-のリストとありますが、
指定されたユーザーのリストはどのように作ればいいのでしょうか?
入れたい値のリストは作成することはできたのですが、
これにどう名前を付けて、usersのひとつにまとめればいいのでしょうか?

自分のプログラム
このrank,name,numにはそれぞれ値がいくつか入っています

@application.route('/', methods=["POST", "GET"])
def index():
    users = []
    rank = rank_text
    name = horse_text
    num = num_text

    return render_template('index3.html',users=users)

    {% for user in users %}
    <tr>
    <form action="/post">
        <tr>{{ user.???}}</tr>
        <tr><button>{{ user.??? }}</button></tr>
        <tr>{{ user.??? }}</tr>
    </form>
    </tr>
    {% endfor %}

回答

次のように編集してはいかがでしょうか。

@application.route('/', methods=["POST", "GET"])
def index():
    users = [
        {
            "rank" : rank_text ,
            "name" : horse_text ,
            "num" : num_text
        }
    ]
    return render_template('index3.html',users=users)

記載のテンプレートのように参照する場合、"配列"の中に"辞書(dict)"を入れる必要があります。

テンプレート内では {{ user.rank_text}} のように参照してください。

編集 履歴 (0)
  • 私の質問の仕方が悪かったみたいで、色々調べてやった結果、htmlにzip関数でリストを渡してあげたらできました。

    ありがとうございました。
    -
ウォッチ

この質問への回答やコメントをメールでお知らせします。