【问题标题】:Python, Flask, and jinja templates - How to iterate over a dictionary created server sidePython、Flask 和 jinja 模板 - 如何迭代字典创建的服务器端
【发布时间】:2012-09-18 21:57:36
【问题描述】:

我正在使用烧瓶。

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

@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 模板来迭代哈希创建服务器端?

【问题讨论】:

    标签: python flask jinja2


    【解决方案1】:

    您需要将creative_handler 传递给模板:

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

    【讨论】:

      【解决方案2】:

      你需要在模板中传入你想使用的变量。

      >>> 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)

      【讨论】:

        【解决方案3】:

        试试

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

        如果 creative_handler 仍然包含您的数据。

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-11-29
          • 1970-01-01
          • 2012-07-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-01-08
          • 1970-01-01
          相关资源
          最近更新 更多