【问题标题】:looping through database results in python/flask在 python/flask 中循环遍历数据库结果
【发布时间】:2016-11-28 11:42:31
【问题描述】:

我从我的数据库中得到以下结果集,

    {
  "workbases": [
    {
      "workbase": "WB 1"
    }, 
    {
      "workbase": "WB 2"
    }, 
    {
      "workbase": "WB 3"
    }, 
    {
      "workbase": "WB 4"
    }, 
    {
      "workbase": "WB 5"
    }, 
    {
      "workbase": "WB 6"
    }, 
    {
      "workbase": "WB 7"
    }, 
    {
      "workbase": "WB 8"
    }, 
    {
      "workbase": "WB 9"
    }, 
    {
      "workbase": "WB 10"
    }, 
    {
      "workbase": "WB 11"
    }, 
    {
      "workbase": "WB 12"
    }, 
    {
      "workbase": "WB 13"
    }, 
    {
      "workbase": "WB 14"
    }, 
    {
      "workbase": "WB 15"
    }, 
    {
      "workbase": "WB 16"
    }
  ]
}

这些结果来自这段代码,

staff = tables.staff_list

sel = select([staff.c.workbase]).distinct(staff.c.workbase).select_from(staff).where(staff.c.workbase != "")

workbases = FlaskApp.db_connect().execute(sel).fetchall()
workbases = [utils.rowdict(a) for a in workbases]

workbases = jsonify(workbases=workbases)

return render_template('leave_request.html', hours_left=100, workbases=workbases)

我尝试过如何查看模板中的工作库数据,

{% for w in workbases %}
    <option value="">{{ w.workbase }}</option>
{% endfor %}

还有

{% for w in workbases.workbases %}
    <option value="">{{ w.workbase }}</option>
{% endfor %}

但它们都没有在我的选择输入中呈现任何选项(代码嵌套在 select 标签中

【问题讨论】:

标签: python python-3.x flask


【解决方案1】:

如果您从 python 文件中删除行 workbases = jsonify(workbases=workbases)。正如 cricket007 所说,jsonify 是一个 flask.Response() 对象,用于将 JSON 数据从 Flask 发送到 XHR 调用或 API 调用之类的东西。这是一个 HTTP 响应,将包含内容标头等。

一旦你删除它,你描述的第二种 Jinja2 方法应该可以工作。

{% for w in workbases.workbases %}
    <option value="">{{ w.workbase }}</option>
{% endfor %}

这将产生与以下相同的结果:

{% for w in workbases['workbases'] %}
    <option value="">{{ w['workbase'] }}</option>
{% endfor %}

因为 Jinja2 不是 Python。有关详细信息,请参阅文档:

http://jinja.pocoo.org/docs/dev/templates/#variables

【讨论】:

    【解决方案2】:

    你试过了吗

    {% for w in workbases['workbases'] %}
        <option value="">{{ w['workbase'] }}</option>
    {% endfor %}
    

    【讨论】:

    猜你喜欢
    • 2019-10-29
    • 2016-10-14
    • 2018-07-09
    • 2013-09-14
    • 2019-02-18
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    相关资源
    最近更新 更多