Вы можете использовать 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>
Если вы хотите итерировать всю коллекцию и ret urn список, если документы с полями name
и lastname
, то вы должны использовать метод 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 %}
Все работает нормально, но затем я попытался выполнить итерацию с помощью вашего метода. Я 'details = list (bans.find ({}, {'Nume codat': 1, 'SteamID': 1, 'Motiv': 1}))', затем '
Странно, работает, если я удалю точку, например. '{{x. ['bla']}}' не так, но '{{x ['blabla'}}}' работает. Должно ли это работать или что-то сделано неправильно с вашей стороны? – nori
Плохо, это была опечатка с вашей стороны, я не смог исправить ответ. Я обновил ответ, чтобы отразить правильный подход. – chridam