我正在使用Python(Flask)中的Web应用程序,它本质上以随机顺序显示来自PostgreSQL数据库(通过Flask-SQLAlchemy)的用户信息,每组信息显示在一个页面上。点击“下一步”按钮将通过用新数据替换页面上的所有数据来引导用户访问下一组数据,依此类推。
我的难题在于使演示文稿真正随机 - 不会通过记住他们所看到的内容而向用户显示两次相同的信息,而不是再次向他们展示那些已经看过的数据集。
该网站没有用户系统,当他们关闭标签/窗口或离开时,应该忘记“已经看到”的数据集。
我还应该补充一点,我一般都是SQL的新手。
这样做的最佳方式是什么?
答案 0 :(得分:1)
最简单的方法是在客户端使用javascript进行随机数生成...
告诉客户端最高行数是多少,然后客户端页面会跟踪它请求的ID(只是一个简单的js数组)。然后当"请求下一个随机页面"单击按钮,它会生成一个小于最高有效行ID的新随机数,并且如果该号码不在其先前查看的项目列表中,则会发送该项目的请求。
这样,您(在服务器上)只需要有2个数据库访问视图:
您没有任何复杂的会话跟踪,用户的浏览器只需要跟踪一个简单的数字列表,即使他们亲自查看数千个不同的项目仍然只是成为一个或两个记忆。
出于性能原因,您甚至可以在加载当前项目时立即预取下一个项目,以便它立即显示并在他们查看时在后台加载下一个项目。 (jQuery .load()是你的朋友:-))
如果您希望从数据库中删除大量项目(以便最高编号无效),那么您可以生成随机ID列表,发送该列表,然后一次请求一个。预先生成随机列表。
希望这有帮助! : - )
答案 1 :(得分:0)
您可以将“已经看到”的数据粘贴在会话cookie中。解释选择随机SQL数据here