如何在谷歌应用引擎中处理用户更改查询参数

时间:2011-06-28 17:23:11

标签: google-app-engine pagination cursor

我有一个列表网站,其中包含许多属性的模型,我想使用过滤器。我想使用memcache和cursor进行查询,例如:

results=Model.all().filter("x =", a).filter("y =",b).with_cursor(cursor).fetch(20).

当用户更改过滤条件时,如何处理光标和分页,例如

from `x=a to x=c`?

我应该存储具有key =查询字符串的游标吗?但随后查询字符串随页码变化:(。我想我需要解析查询字符串,删除页码并将其用作游标的键。这是我应该怎么做的?

2 个答案:

答案 0 :(得分:0)

您可以对当前过滤器进行“哈希”,并将其传递给视图。这可以作为隐藏字段存储在那里,例如<input type="hidden" name="prev_query" value="{{query_hash}}"/>

在第二次请求时,您将检查当前过滤器的散列是否等于作为参数传递。

'Hash'可能是你的过滤器参数的md5,或者只是加入它们的连接。

答案 1 :(得分:0)

将光标想象为书签,在结果集中保留位置。游标特定于它们的查询。您不能将同一个光标用于两个不同的查询 - 这类似于期望一本书中的书签向您显示您在另一本书中的距离。

如果要将光标存储在其他位置,则需要按照过滤条件对其进行键入,以便查找相应的光标。但是,Memcache是​​一个糟糕的选择,因为元素可能随时被驱逐。为什么不将光标作为“下一页”网址的一部分?