2012-09-18 54 views
3

我正在使用烧瓶。Python,Flask和jinja模板 - 如何遍历字典创建的服务器端

在服务器服务器上加载页面时,我创建了一个字典。

@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 

So..how做我用神社模板迭代哈希创建服务器端?

回答

6

你需要传递creative_handler到模板:

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

尝试

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

如果creative_handler包含您的数据无论如何。

您必须将对象实际传递给模板,以便可以看到它并为其指定一个名称,然后在模板中使用该名称。此外,仅供参考代码不执行客户端,它建立在您的应用程序,然后发送到客户端。他们只是看到循环等产生的HTML。

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)