web.py是一个超轻的python web 微框架。
db.select()返回数据类型并不是一个list,而是一个web.util.IterBetter的Iterator,所以如果通过以下代码修改数据属性项,后续再for...in...时,就为空了。
result = db.select('app')
# 第一次遍历
for app in result:
app.update({u'ownerfullname': user['fullname']})
#第二次遍历
for app in result: #这个时候是空的
pass
原因就是iterator迭代后,就无法从头开始重新迭代了,那么解决办法就是在迭代过程中,用一个额外的list()去存储数据,而且这个list()也可以作为render函数的参数,跟iterbetter一样,其实是因为iterbetter内部实现了__getitem__函数,也就可以当作list来使用了。