每次使用views
对象检索帖子时,如何增加Pagination
的值?例如,以下代码将生成TypeError: 'Pagination' object is not iterable
:
@app.route('/myview/<int:page>')
def view(page=1):
per_page = 10
posts = Posts.query.order_by(Posts.time.desc()).paginate(page, per_page, error_out=False)
for post in posts:
post.views += 1
db.session.commit()
return render_template('view.html',posts=posts)
答案 0 :(得分:0)
据我了解,发生了两件事:
第1部分:分页是paginate
返回的类,迭代元素的方法是通过items
。这就是为什么尝试遍历TypeError
类时得到Pagination
的原因。您可以在docs或this answer
正确的迭代方法是:
for post in posts.items:
# your code
第2部分:如果要在迭代对象时更新对象,则还需要添加并提交。我不确定在循环时实际上是否可以更新对象,但是可以尝试:
session = db.session
for post in posts.items:
post.views += 1
session.add(post)
session.commit()
return render_template('view.html',posts=posts)
如果不起作用,您可以将ID附加到列表中并在末尾全部更新,也可以使用其他会话在循环内进行查询和更新。
posts_rendered = []
for post in posts.items:
posts_rendered.append(post.id)
session.query(Posts).filter(Posts.id.in_(posts_rendered))\
.update({Posts.views: Posts.views + 1})
session.commit()
对更新有很好的回应
答案 1 :(得分:0)
您不能迭代directly分页对象-
您必须迭代项目-
If (lblnews.Left + lblnews.Width) <= 0 Then
lblnews.Left = 0
Else
lblnews.Caption = "WELCOME TO MY APPLICATION"
End If
lblnews.Left = lblnews.Left - 25