3

フラスコを使用しています。

ページが読み込まれたときにサーバーサーバーで辞書を作成します。

@app.route('/edit_creative', methods=["GET", "POST"])
@login_required
def edit_creative():
    if request.method == "POST": 
        pass

    query = """select * from mystable"""
    print query
    rows = execute_query(query,select=True)
    creative_handler={}
    for row in rows:
        j = row[2].strip("'")
        j = json.loads(j)
        creative_handler[row[1]]=j

    return render_template("edit_creatives.html",title = 'Edit Creative')

クライアント側では、ハッシュを繰り返し処理したいと思います。

{% for crid, object in creative_handler.iteritems() %}

{{ crid }}<br>

{% endfor %}

ページ上でこのエラーが発生します

UndefinedError: 'creative_handler' is undefined

では、jinjaテンプレートを使用してハッシュ作成サーバー側を反復処理するにはどうすればよいですか?

4

3 に答える 3

6

creative_handlerテンプレートに渡す必要があります:

return render_template("edit_creatives.html", title='Edit Creative', creative_handler=creative_handler)
于 2012-09-18T22:01:27.463 に答える
3

テンプレートで、使用する変数を渡す必要があります。

>>> from flask import render_template
>>> help(render_template)
render_template(template_name, **context)
    Renders a template from the template folder with the given
    context.

    :param template_name: the name of the template to be rendered
    :param context: the variables that should be available in the
                    context of the template.

それでreturn render_template("edit_creatives.html",title = 'Edit Creative', creative_handler = creative_handler)

于 2012-09-18T22:04:09.227 に答える
0

試す

return render_template("edit_creatives.html",title = 'Edit Creative', creative_handler = creative_handler)

とにかくcreative_handlerにデータが含まれている場合。

オブジェクトを実際にテンプレートに渡して、表示できるようにし、テンプレートで使用する名前を付ける必要があります。また、参考までに、コードはクライアント側では実行されず、アプリ内に構築されてからクライアントに送信されます。彼らはループなどから生じるHTMLを見るだけです。

于 2012-09-18T22:02:16.323 に答える