会话未提交签出12b flask web开发人员

2024-04-19 18:33:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我遵循Miguel Grinberg的《Flask Web开发》一书中描述的示例

我在12b(关于追随者的章节)签出,但该应用程序无法持久

改变模型后,它工作了。然而,我不确定这是否是正确的方法

class User(UserMixin, db.Model):
    #...
    def follow(self, user):
        if not self.is_following(user):
            f = Follow(follower=self, followed=user)
            db.session.add(f)

在添加:db.session.commit()之后,它工作了,但是,我可能遗漏了一些东西,因为这是我到目前为止遇到的第一个“错误”


Tags: 方法模型selfweb应用程序flask示例db
1条回答
网友
1楼 · 发布于 2024-04-19 18:33:53

不,在follow()方法中添加db.session.commit()是解决您的问题的一种变通方法,但不是一个好主意

最后,route函数中应该存在一个数据库提交。其思想是,在请求期间,所有更改都会在数据库会话中累积,只有在最后,当我们确定请求成功时,才会进行提交,以使所有这些更改永久化

实际上,我录制了一段简短的视频,其中讨论了在每个请求的最后发出一次提交的想法,如果您想了解更多信息,请参见https://www.youtube.com/watch?v=5-4W3m5gRAs

对于您的特定问题,您需要检查follow()方法返回后主路由函数中没有提交的原因。在那里添加提交应该可以解决您的问题

相关问题 更多 >