在 Jinja 中呈现数据库结果似乎添加了额外的 {} 字符
Rendering database results in Jinja seems to add extra {} characters
我想在我的模板中呈现 SQLite 数据库查询的结果。然而,它们看起来都像{ColIntitule': u'I like IceCream'}
。我不想要 {}
或列名。我该如何正确渲染它?
def query_db(query, args=(), one=False):
cur = g.db.execute(query, args)
rv = [dict((cur.description[idx][0], value) for idx, value in enumerate(row)) for row in cur.fetchall()]
return (rv[0] if rv else None) if one else rv
@app.route('/toto')
def toto():
entries = query_db("select ColIntitule from toto where col1 = 1")
return render_template('show_results.html', entries = entries)
show_results.html
:
{% extends "layout.html" %}
{% block body %}
<ul class=entries>
{% for entry in entries %}
<li><h2>{{ entry }}</h2>
<br>
{% else %}
<li><em>No entry here</em>
{% endfor %}
</ul>
{% endblock %}
可能是问题中的错字,但是,在 toto()
中,entry
在哪里定义和设置?是否有全球潜伏?
查询结果绑定到 entries
,但 entry
被传递给 render_template()
这一事实 可能 解释了这一点.
entries
是 dict
对象的列表,因此当您使用 {{ entry }}
在模板中打印它们时,您正在打印 dict
代表。
您的模板应该更像这样
{% extends "layout.html" %}
{% block body %}
<ul class=entries>
{% for entry in entries %}
<li><h2>{{ entry["ColIntitule"] }}</h2>
<br>
{% else %}
<li><em>No entry here</em>
{% endfor %}
</ul>
{% endblock %}
我想在我的模板中呈现 SQLite 数据库查询的结果。然而,它们看起来都像{ColIntitule': u'I like IceCream'}
。我不想要 {}
或列名。我该如何正确渲染它?
def query_db(query, args=(), one=False):
cur = g.db.execute(query, args)
rv = [dict((cur.description[idx][0], value) for idx, value in enumerate(row)) for row in cur.fetchall()]
return (rv[0] if rv else None) if one else rv
@app.route('/toto')
def toto():
entries = query_db("select ColIntitule from toto where col1 = 1")
return render_template('show_results.html', entries = entries)
show_results.html
:
{% extends "layout.html" %}
{% block body %}
<ul class=entries>
{% for entry in entries %}
<li><h2>{{ entry }}</h2>
<br>
{% else %}
<li><em>No entry here</em>
{% endfor %}
</ul>
{% endblock %}
可能是问题中的错字,但是,在 toto()
中,entry
在哪里定义和设置?是否有全球潜伏?
查询结果绑定到 entries
,但 entry
被传递给 render_template()
这一事实 可能 解释了这一点.
entries
是 dict
对象的列表,因此当您使用 {{ entry }}
在模板中打印它们时,您正在打印 dict
代表。
您的模板应该更像这样
{% extends "layout.html" %}
{% block body %}
<ul class=entries>
{% for entry in entries %}
<li><h2>{{ entry["ColIntitule"] }}</h2>
<br>
{% else %}
<li><em>No entry here</em>
{% endfor %}
</ul>
{% endblock %}