Tener esto para Flask:
example = mongo.db.example got_name = example.find({'name':1}) got_lastname = example.find({'lastname':1}) details = {'name' : got_name, 'lastname' : got_lastname} return render_template('blabla.html', details=details)Luego, el bucle for usando Jinja en mi HTML (queriendo que sea una tabla):
{% for x in details} <tr> <td>{{ x.['name'] }}</td> <td>{{ x.['lastname'] }}</td> </tr> {% endfor %}Pero no funcionará, no muestra nada en mi tabla. Escribí este ejemplo arriba ahora, pero mi código es similar.
Es posible que desee utilizar find_one() en lugar de find() que devuelve un cursor a los documentos que coinciden con los criterios. find_one() devuelve un solo documento que luego se puede usar en el diccionario, en lugar de un cursor:
example = mongo.db.example doc = example.find_one() details = { 'name' : doc['name'], 'lastname' : doc['lastname'] } return render_template('blabla.html', details=details)O
example = mongo.db.example details = example.find_one({}, {'name':1, 'lastname':1}) return render_template('blabla.html', details=details)Y tu plantilla será
<tr> <td>{{ details['name'] }}</td> <td>{{ details['lastname'] }}</td> </tr> Si desea iterar toda la colección y devolver una lista de documentos con solo los campos de name y lastname , entonces debe usar el método find() . Si tiene un conjunto de datos relativamente pequeño, el siguiente código convertirá todo el conjunto de resultados (Cursor) en una lista (todo se almacena en la memoria):
example = mongo.db.example details = list(example.find({}, {'name': 1, 'lastname': 1})) return render_template('blabla.html', details=details)Luego repite la lista en tu plantilla
{% for doc in details} <tr> <td>{{ doc['name'] }}</td> <td>{{ doc['lastname'] }}</td> </tr> {% endfor %}Su plantilla en realidad tendría que ser más como esto:
<tr> <td>{{ details['name'] }}</td> <td>{{ details['lastname'] }}</td> </tr>Sin bucles.
Si tuviera una variedad de diccionarios, entonces podría usar su plantilla inicial.