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 回答