烧瓶& MongoDB - For Loop无法正常工作

时间:2017-01-19 10:14:48

标签: python mongodb flask pymongo

为Flask做这个:

signInWithEmailAndPassword

然后在我的HTML中使用Jinja的for循环(希望它成为一个表):

firebaseAuth

但它不起作用,它不会在我的表格中显示任何内容。我现在上面写了这个例子,但我的代码很相似。

2 个答案:

答案 0 :(得分:1)

您可能希望使用 find_one() 而不是 find() ,它会将光标返回到符合条件的文档。 find_one() 会返回单个文档,然后可以在字典中使用,而不是光标:

example = mongo.db.example
doc = example.find_one()

details = { 'name' : doc['name'], 'lastname' : doc['lastname'] }

return render_template('blabla.html', details=details)

或者

example = mongo.db.example
details = example.find_one({}, {'name':1, 'lastname':1})

return render_template('blabla.html', details=details)

您的模板将

<tr>
    <td>{{ details['name'] }}</td>
    <td>{{ details['lastname'] }}</td>
</tr>

如果要迭代整个集合并返回列表(如果文档只包含namelastname字段,那么您应该使用 find() 方法。 如果您有一个相对较小的数据集,以下代码将整个结果集(Cursor)转换为一个列表(所有内容都被拉入内存):

example = mongo.db.example
details = list(example.find({}, {'name': 1, 'lastname': 1}))

return render_template('blabla.html', details=details)

然后迭代模板中的列表

{% for doc in details}
<tr>
    <td>{{ doc['name'] }}</td>
    <td>{{ doc['lastname'] }}</td>
</tr>
{% endfor %}

答案 1 :(得分:0)

您的模板实际上必须更像这样:

<tr>
    <td>{{ details['name'] }}</td>
    <td>{{ details['lastname'] }}</td>
</tr>

没有循环。

如果你有一系列词典,那么你可以使用你的初始模板。