通过在python /瓶数据库结果
问题描述:
我得到以下结果从我的数据库设置循环,通过在python /瓶数据库结果
{
"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)
如何去翻翻模板中的workbases数据,我都试过了,
{% for w in workbases %}
<option value="">{{ w.workbase }}</option>
{% endfor %}
,也
{% for w in workbases.workbases %}
<option value="">{{ w.workbase }}</option>
{% endfor %}
但niether他们使我的选择输入的任何选项(代码嵌套在select
标签
答
你试过
{% for w in workbases['workbases'] %}
<option value="">{{ w['workbase'] }}</option>
{% endfor %}
+0
在jinja2'workbases ['workbase']'和'workbases.workbases'本质上是一样的东西http:/ /jinja.pocoo.org/docs/dev/templates/#variables – abigperson
答
如果你从你的Python文件中删除线workbases = jsonify(workbases=workbases)
。正如cricket007所述,jsonify
是一个flask.Response()
对象,用于将来自Flask的JSON数据发送到类似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的。看到文档的更多详细信息:
你为什么'jsonify'你的数据结构? * flask中的'jsonify()'函数返回'flask.Response()'object *。 - http://*.com/questions/7907596/json-dumps-vs-flask-jsonify#13172658 –