作为一个学习项目,我将 MongoDB 与 Bottle 一起用于 Web 服务。我想要做的是从 MongoDB 中获取结果并将它们显示在模板中。这是我想要的模板的输出:
output.tpl
<html><body>
%for record in records:
<li>{{record.city}} {{record.date}}
%end
</body></html>
我可以毫无问题地提取数据:
result = db.records.find(query).limit(3)
return template('records_template', records=result)
但这根本没有输出 - 一些调试告诉我结果是某种游标:
<pymongo.cursor.Cursor object at 0x1560dd0>
所以我试图把它转换成模板想要的东西:
result = db.records.find(query).limit(3)
viewmodel=[]
for row in result:
l = dict()
for column in row:
l[str(column)]=row[column]
viewmodel.append(l)
return template('records_template', records=viewmodel)
调试显示我的视图数据看起来不错:
[{'_id': ObjectId('4fe3dfbc62933a0338000001'),
'city': u'CityName',
'date': u'Thursday June 21, 2012'},
{'_id': ObjectId('4fe3dfbd62933a0338000088')
'city': u'CityName',
'date': u'Thursday June 21, 2012'},
{'_id': ObjectId('4fe3dfbd62933a0338000089')
'city': u'CityName',
'date': u'Thursday June 21, 2012'}]
但这是我得到的回应。任何想法为什么?
AttributeError("'dict' 对象没有属性 'city'",)
编辑:我添加了关于 l[str(column)]=row[column] 的那一点,以将字典键转换为非 unicode 字符串,以防万一出现问题,但这似乎并不重要。