Bạn có thể muốn sử dụng find_one()
thay vì find()
trả về một con trỏ đến các tài liệu phù hợp với tiêu chí. find_one()
trả về một tài liệu duy nhất sau đó có thể được sử dụng trong từ điển, thay vì con trỏ:
example = mongo.db.example
doc = example.find_one()
details = { 'name' : doc['name'], 'lastname' : doc['lastname'] }
return render_template('blabla.html', details=details)
Hoặc
example = mongo.db.example
details = example.find_one({}, {'name':1, 'lastname':1})
return render_template('blabla.html', details=details)
Và mẫu của bạn sẽ là
<tr>
<td>{{ details['name'] }}</td>
<td>{{ details['lastname'] }}</td>
</tr>
Nếu bạn muốn lặp lại toàn bộ bộ sưu tập và trả về một danh sách nếu tài liệu chỉ có tên name
và lastname
thì bạn nên sử dụng trường find()
Nếu bạn có một tập dữ liệu tương đối nhỏ, đoạn mã sau sẽ chuyển đổi toàn bộ tập kết quả (Con trỏ) thành một danh sách (mọi thứ được kéo vào bộ nhớ):
example = mongo.db.example
details = list(example.find({}, {'name': 1, 'lastname': 1}))
return render_template('blabla.html', details=details)
Sau đó, lặp lại danh sách trong mẫu của bạn
{% for doc in details}
<tr>
<td>{{ doc['name'] }}</td>
<td>{{ doc['lastname'] }}</td>
</tr>
{% endfor %}