как обрабатывать пользовательские параметры запроса в Google App Engine - PullRequest
1 голос
/ 28 июня 2011

У меня есть сайт со списком моделей со многими свойствами, на которых я хотел бы использовать фильтры. Я хотел бы использовать memcache и курсор для запросов, например:

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

Как мне обращаться с курсором и нумерацией страниц, когда пользователь меняет критерии фильтра, например

from `x=a to x=c`?

Должен ли я хранить курсор с ключом = строкой запроса? Но затем строка запроса меняется с номерами страниц :(. Я думаю, мне нужно будет проанализировать строку запроса, удалить номера страниц и использовать ее в качестве ключа для курсора. Так я должен это делать?

Ответы [ 2 ]

0 голосов
/ 29 июня 2011

Думайте о курсоре как о закладке, занимающей место в наборе результатов.Курсоры являются специфическими для запроса, для которого они предназначены.Вы не можете использовать один и тот же курсор для двух разных запросов - это было бы похоже на ожидание закладки из одной книги, чтобы показать вам, как далеко вы находитесь в другой.Вам нужно будет ввести их по критериям фильтра, чтобы вы могли найти подходящий.Однако Memcache - плохой выбор, поскольку элементы могут быть выселены в любое время.Почему бы просто не сделать курсор частью URL следующей страницы?

0 голосов
/ 28 июня 2011

Вы можете сделать «хэш» вашего текущего фильтра и передать его для просмотра. Это можно хранить там как скрытое поле, например <input type="hidden" name="prev_query" value="{{query_hash}}"/>

По второму запросу вы убедитесь, что хеш текущего фильтра равен переданному в качестве параметра.

'Хэш' может быть md5 ваших параметров фильтра, или просто присоединиться к их объединению.

...