【问题标题】:pymngo and flask for pagnation [closed]用于分页的 pymongo 和烧瓶 [关闭]
【发布时间】:2016-03-05 00:03:41
【问题描述】:

我想用 Flask 构建 python 网络服务,它可以使用 http://docs.mongoengine.org/projects/flask-mongoengine/en/latest/ 从 mongo 获取数据。

我有 mongo 查询:

db.item.find({},{"uid":1,"created_on":1,"attributes.value":1}).sort({created_on:-1}).limit(3).pretty()

输出:

{
    "_id" : ObjectId("5656f606a80ea9407853808b"),
    "uid" : 2008,
    "created_on" : ISODate("2015-11-26T05:14:07Z")
}
{
    "_id" : ObjectId("5656f5f9a80ea94076538098"),
    "uid" : 2007,
    "created_on" : ISODate("2015-11-26T05:12:29Z")
}
{
    "_id" : ObjectId("5656f5e7a80ea94076538097"),
    "uid" : 2006,
    "created_on" : ISODate("2015-11-26T05:12:20Z")
}
{
    "_id" : ObjectId("5656f5d6a80ea940775380c3"),
    "uid" : 2005,
    "created_on" : ISODate("2015-11-26T05:12:19Z")
}
{
    "_id" : ObjectId("5656f4c4a80ea94076538095"),
    "uid" : 2004,
    "created_on" : ISODate("2015-11-26T05:12:14Z")
}
{
    "_id" : ObjectId("5656f4b4a80ea940775380c2"),
    "uid" : 2003,
    "created_on" : ISODate("2015-11-26T05:12:09Z")
}
{
    "_id" : ObjectId("5656f4a7a80ea9407853808a"),
    "uid" : 2002,
    "created_on" : ISODate("2015-11-26T05:12:05Z")
}
{
    "_id" : ObjectId("5656f499a80ea940775380c1"),
    "uid" : 2001,
    "created_on" : ISODate("2015-11-26T05:12:00Z")
}
{
    "_id" : ObjectId("5656f483a80ea94078538089"),
    "uid" : 2000,
    "created_on" : ISODate("2015-11-26T05:11:55Z")
}
{
    "_id" : ObjectId("5656f462a80ea94078538088"),
    "uid" : 1999,
    "created_on" : ISODate("2015-11-26T05:11:51Z")
}
{
    "_id" : ObjectId("5656f454a80ea94075538089"),
    "uid" : 1998,
    "created_on" : ISODate("2015-11-26T05:11:46Z")
}
{
    "_id" : ObjectId("5656f42fa80ea940775380c0"),
    "uid" : 1997,
    "created_on" : ISODate("2015-11-26T05:11:42Z")
}
{
    "_id" : ObjectId("5656f404a80ea94076538094"),
    "uid" : 1996,
    "created_on" : ISODate("2015-11-26T05:11:37Z")
}
{
    "_id" : ObjectId("5656f3f7a80ea940775380bd"),
    "uid" : 1995,
    "created_on" : ISODate("2015-11-26T05:11:32Z")
}
{
    "_id" : ObjectId("5656f3d2a80ea94078538087"),
    "uid" : 1994,
    "created_on" : ISODate("2015-11-26T05:11:27Z")
}
{
    "_id" : ObjectId("5656f3bba80ea94076538093"),
    "uid" : 1993,
    "created_on" : ISODate("2015-11-26T05:11:22Z")
}
{
    "_id" : ObjectId("5656f363a80ea94078538086"),
    "uid" : 1992,
    "created_on" : ISODate("2015-11-26T05:11:17Z")
}
{
    "_id" : ObjectId("5656f351a80ea94076538092"),
    "uid" : 1991,
    "created_on" : ISODate("2015-11-26T05:11:13Z")
}
{
    "_id" : ObjectId("5656f327a80ea940775380bc"),
    "uid" : 1990,
    "created_on" : ISODate("2015-11-26T05:11:08Z")
}
{
    "_id" : ObjectId("5656f308a80ea94078538085"),
    "uid" : 1989,
    "created_on" : ISODate("2015-11-26T05:11:03Z")
}

我试过这个:

from flask import Flask
from flask.ext.pymongo import PyMongo

app = Flask(__name__)
mongo = PyMongo(app)


@app.route('/')
def home_page():
    online_items = mongo.db['mydb'].item.find({},{"uid":1}).sort({created_on:-1})
    return render_template('index.html',
        online_users=online_items)

if __name__ == '__main__':
    app.run()

但它给出了 500 错误。有什么建议吗?还想在上面添加分页。

调试时出错 = True。

Traceback (most recent call last):
  File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main
    "__main__", fname, loader, pkg_name)
  File "/usr/lib/python2.7/runpy.py", line 72, in _run_code
    exec code in run_globals
  File "/usr/local/iep/iep-3.7/source/iep/__main__.py", line 46, in <module>
    import iep
  File "/usr/local/iep/iep-3.7/source/iep/__init__.py", line 56, in <module>
    raise RuntimeError('IEP requires Python 3.x to run.')
RuntimeError: IEP requires Python 3.x to run.

【问题讨论】:

    标签: mongodb python-2.7 flask pymongo flask-restful


    【解决方案1】:

    我发现你忘记导入render_template了。

    将此行更改为:

    from flask import Flask
    

    from flask import Flask, render_template
    

    如果还有错误,打开调试模式:

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

    并粘贴完整的错误日志。

    【讨论】:

    • 谢谢@lord63.j。让我试试这个。这里 debug = True 要求我运行它 python 3。那么有没有其他方法可以用 Python 2.7 调试它
    • "要求我运行它 python 3" 我不知道这是什么意思?你能给我看完整的日志吗?
    • 为您更新了问题
    • 恐怕iep不支持python2.x,可以看到“Programming Language :: Python :: 3”。所以你可能不得不使用 python3.x 来运行你的应用程序。
    • 非常感谢@lord64.J
    猜你喜欢
    • 2013-11-24
    • 1970-01-01
    • 2011-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-19
    • 1970-01-01
    相关资源
    最近更新 更多