【发布时间】:2021-02-20 00:37:41
【问题描述】:
我有一个 Flask 应用程序,需要在用户浏览内容时存储用户的位置。
例如,我有这样一条路线:@main_bp.route('/articles/<category>/<article_number>', defaults={'category': 'new'})
内容的组织方式使您可以浏览某个类别下的文章:从 0 开始,然后是 1,依此类推。第 3 篇文章的 URL 如下所示:articles/<category>/3
我想保存用户的位置,这样如果他们在访问文章 3 后离开网站,当他们导航到文章页面时,他们将登陆 articles/<category>/3,而不是 articles/<category>/0。
实现这一目标的最佳方法是什么?目前,我已经对数据库中的数据进行了建模,所以有一列看起来像category_article_last_visited(整数)。我可以在用户浏览网站时存储这些数据,但我不确定当他们返回文章页面时如何检索这些数据。
我尝试过的:
-
@main_bp.route('/articles/<category>/<article_number>', defaults={'category': 'new', 'article_number':current_user.category_article_last_visited}),但是我得到一个错误,没有这样的属性。 - 在路由函数中检查
current_user.category_article_last_visited并使用文章编号。这会呈现正确的内容,但不会更改 URL,这是行不通的。 - 如果用户具有
current_user.category_article_last_visited的值,则重定向用户。这似乎没有产生任何变化。
我很好奇存储在数据库中(分配值、db.commit() 等)是否是正确的路径,或者我是否应该更多地探索烧瓶会话。我需要这些信息在会话中持续存在,这样如果用户注销、清除 cookie、使用不同的设备等,它仍然可用。将来我可能还会对这些值进行分析。
- 我上面描述的方法是实现这一目标的最佳方法吗?是烧瓶会话还是其他更好的东西?
- 如果上述方法最好,我如何正确路由此信息,以便将用户定向到他们离开的页面,并适当更改 URL?
谢谢
【问题讨论】:
标签: python session flask flask-sqlalchemy