12

我正在尝试返回我的帖子,但我得到了

TypeError:'Cursor' 对象不可调用。

我该如何纠正?这是我的代码:

from flask import Flask  
from flask.ext.pymongo import PyMongo  
app = Flask(__name__)  
mongo = PyMongo(app)  
from pymongo import Connection  
connection = Connection()  
db = connection.test_database  
collection = db.test_collection  

@app.route('/')  
def home_page():  
   post = {"author":"mike","text":"jiii"}  
   posts = db.posts  
   posts.insert(post)  
   return posts.find()

if __name__=='__main__':  
   app.run(debug=True)
4

4 回答 4

13

find() 返回一个Cursor对象,您必须对其进行迭代才能访问查询返回的文档。如:

for post in posts.find():
    # do something with post
于 2012-04-27T00:34:33.487 回答
7
于 2012-04-27T20:20:09.257 回答
1

上面的答案都是正确的。Flask 视图应该返回某种 HTTP 响应。所以你需要处理数据并做出响应,可能会使用 Flask 的实用函数。此外,该find()方法返回一个游标,您需要在某些时候对其进行迭代。

您只需要更改视图的最后一行:

@app.route('/')  
def home_page():  
   post = {"author":"mike","text":"jiii"}  
   posts = db.posts  
   posts.insert(post)  
   return render_template(posts.find(), "index.html")

并提供一个index.html包含以下内容的内容:

{% for post in posts %}
<h2>Post by {{ post.author}}</h2>
<p>{{ post.text }}</p>
{% endfor %}
于 2014-05-20T20:29:46.587 回答
0

利用:

from flask_pymongo import Pymongo

代替:

from flask.ext.pymongo import PyMongo
于 2017-04-20T22:30:46.140 回答