Как получить все IdObjects в MongoDB, используя DropDownMenu во Flask - PullRequest
1 голос
/ 03 октября 2019

Я стремлюсь использовать dropdownMenu Bootstrap, где каждый элемент в меню получает IdObject моего MongoDB.

Причина в том, что я хочу, чтобы эти IdObjects были в одном списке, чтобы получить все данные, которыехранится в этой коллекции. Поэтому вот мои коды:

HTML

<div class="dropdown-menu" aria-labelledby="dropdownMenu2">
    {% for row in rows %}
       <button class="dropdown-item" href="./get_object?_id={{row['_id']}}" type="button">{{row['_id']}}</button>
    {% endfor %}
</div>

Python

@app.route("/get_object", methods=['POST', 'GET'])
def get_object():
    cursor = object_collection.find({})
    for document in cursor:
        row = document['_id']
        return render_template("get_object.html", rows=row)

Каким-то образом я не получилчто я хочу. У меня были некоторые ошибки в файле Python и HTML. Хорошо, как я это делаю?

  File "˜/application/app.py", line 52, in get_object
    return render_template("get_object.html", rows=row)

  File ˜/application/templates/get_object.html", line 18, in block "content"
    {% for row in rows %}

1 Ответ

1 голос
/ 03 октября 2019

Вы просто хотите список. Прямо сейчас у вас есть return в цикле for. Вместо этого просто добавьте к списку и вызовите шаблон со всем списком сразу:

@app.route("/get_object", methods=['POST', 'GET'])
def get_object():
    rows = []                               # define an empty list
    cursor = object_collection.find({},{ "_id": 1 })
    for document in cursor:
        rows.append(document['_id'])        # <- append to the list

    return render_template("get_object.html", rows=rows)  # Use the whole list in output

Обратите также внимание, что .find({},{ _id: 1 }) в проецируется только the _id поле в результатах, а не весь объект. Так что это полезно, когда вам нужны только значения _id, чтобы ненужные данные не отправлялись по сети.

В вашем шаблоне теперь это просто список значений , поэтому свойства _id нет. Просто используйте значение:

<button class="dropdown-item" href="./get_object?_id={{row}}" type="button">{{row}}</button>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...