我正在尝试在Web应用程序中显示mongo数据库中的值。我正在使用flask框架,在这里我调用函数,该函数将返回列表以html模板打印。我的代码如下所示
dic = mycol.find(myquery)
这将从mongodatabase查询内容字典对象 当我遍历这个对象时,我得到了字典集
for x in dic:
像x的每个值都包含
{'name':'john','age':'15','weight':'50'}
{'name':'ash','age':'18','weight':'60'}
{'name':'tim','age':'20','weight':'80'}
我用于呈现这些值的代码如下
person_name = []
person_age = []
person_weight = []
for x in dic:
person_name.append(x["person_name"])
person_age.append(x["person_age"])
person_weight.append(x["person_weight"])
稍后我将返回这些列表以html打印 jinja 2的代码如下
{{person_name[loop.index0]}} {{person_age[loop.index0]}} {{person_weight[loop.index0]}}
我觉得这不是更好的方法。那么,在几行代码中还有其他更好的方法吗?感谢您阅读
答案 0 :(得分:1)
如果您使用的是flask,则可以使用render_template()flask函数将列表或字典简单地传递到HTML模板。
就您而言,您可以简单地做(以此为例)。请注意,在编写dictionary=dic
的地方,第一个dictionary
可以是任何名称/变量,然后您将使用Jinja2语法进行引用。
@app.route('/')
def index():
# Code to get dictionary from db, assigned to dic like yours
return render_template('[name of template].html', dictionary=dic)
然后在模板中,您可以使用Jinja2语法进行for循环,以在dic字典/列表中列出。
// Somewhere inside HTML template
{% for x in dictionary %}
<p>{{ x.name }}</p>
<p>{{ x.age }}</p>
<p>{{ x.weight }}</p>
{% endfor %}