如何在 Flask 中使用 DropDownMenu 获取 MongoDB 中的所

我的目标是使用 Bootstrap 的 dropdownMenu,其中菜单中的每个项目都获取我的 MongoDB 的 IdObject。


原因是我希望将这些 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 %}


偶然的你
浏览 128回答 1
1回答

犯罪嫌疑人X

你只想要一个清单。现在你有循环return内。for相反,只需附加到列表并立即使用整个列表调用模板:@app.route("/get_object", methods=['POST', 'GET'])def get_object():&nbsp; &nbsp; rows = []&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;# define an empty list&nbsp; &nbsp; cursor = object_collection.find({},{ "_id": 1 })&nbsp; &nbsp; for document in cursor:&nbsp; &nbsp; &nbsp; &nbsp; rows.append(document['_id'])&nbsp; &nbsp; &nbsp; &nbsp; # <- append to the list&nbsp; &nbsp; return render_template("get_object.html", rows=rows)&nbsp; # Use the whole list in output另请注意,.find({},{ _id: 1 })仅投影结果 中的字段而不是整个对象。因此,当您只需要这些值以便不通过网络发送不必要的数据时,这很有用。_id_id在您的模板中,这现在只是一个values列表,因此没有_id属性。只需使用值:<button class="dropdown-item" href="./get_object?_id={{row}}" type="button">{{row}}</button>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python