gpt4 book ai didi

flask - 使用分页时如何更新值?

转载 作者:行者123 更新时间:2023-12-03 13:34:21 24 4
gpt4 key购买 nike

如何增加 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)

最佳答案

据我了解,发生了两件事:

  • 对象帖子的分页
  • 在检索到的每一行上保存新信息

  • 第 1 部分 : 分页是 paginate 返回的类遍历元素的方法是通过 items .这就是为什么你会得到一个 TypeError当试图遍历 Pagination类(class)。您可以在 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 附加到列表并在最后更新全部,或者使用不同的 session 在循环内查询和更新。

    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()

    可以在 here 中找到有关更新的出色响应

    关于flask - 使用分页时如何更新值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57240323/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com