如何使下一个/上一个按钮在gql查询结果之间切换

时间:2012-04-21 06:43:44

标签: django google-app-engine gql

假设我的网站有100个产品。然后将其过滤到5个部分,每个部分包含20个产品。如果您在其中一个包含20个产品(例如玩具)的部分中,那么每页仅显示5个玩具的最佳方法是什么。在列表的底部将是下一个/上一个按钮,以显示下一个/上一组5个玩具。

更好的比喻是谷歌搜索。有数百万的结果,但在给定的时间只显示约10个。

所以现在我正在使用谷歌应用引擎(python)和django模板。我想要解决这个问题的一种方法是将所有查询结果放入div中,然后可以通过javascript修改以产生类似的效果。但是,如果有人要点击浏览器的后退按钮,他们就不会去他们原来的地方。

提前致谢。任何帮助都是有用的...我不知道这种技术被称为什么,所以谷歌并没有真正有用:(

修改:根据回复,我发现我的问题已在此处解决:How to use cursor() for pagination?

2 个答案:

答案 0 :(得分:1)

查看查询cursors。 Thay被序列化并发送给客户端,用于创建“下一个”和“之前”的寻呼请求。

注意:请勿在查询中使用offset。这可能非常昂贵,因为它actually fetches (and charges) all entities up to offset+limit position,但只返回应用limit结果。

答案 1 :(得分:0)

我不确定将所有结果作为隐藏内容放在HTML中并使用JS操作它是一个非常好的主意,如果你可能有一个大的结果集(想想如果谷歌使用这种方法会发生什么)。您还提到了后面的功能问题。

所以,对于每次查询想要的“结果页面”,我认为Google的GQL Reference可能对您有所帮助,具体看一下LIMIT子句,它可以帮助您创建分页机制。通过向其提供您想要的每页项目数“计数”以及之前被视为“偏移”的项目数(第一次调用时为0)来寻找。

至于显示方面,我认为Google Images / Facebook News Feed方法可能也很有意思(加载滚动而不是分页),但这是您个人选择的问题:)

希望这有帮助,祝你好运!

编辑:在阅读了彼得的回答之后,我发现使用游标进行分页会更有效率,他的回答中给出了很好的参考。