2016-11-28 47 views
0

我得到以下结果从我的数据库设置循环,通过在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标签

+2

你为什么'jsonify'你的数据结构? * flask中的'jsonify()'函数返回'flask.Response()'object *。 - http://stackoverflow.com/questions/7907596/json-dumps-vs-flask-jsonify#13172658 –

回答

0

你试过

{% 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

0

如果你从你的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的。看到文档的更多详细信息:

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