2012-09-18 58 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)