Найти - Пользователи
Полная версия: склеивание парметров get
Начало » Django » склеивание парметров get
1
tier
Приветствую всех.
Такая проблема. Страница, на ней отображаются все экземпляры модели. Их сотни, поэтому прикручена пейджинация. Номер страницы передается во вьюху, как get-параметр page=xxx. Все работает как надо.
Но тут прикрутил еще поиск на этой странице. Фактически, простая фильтрация через __icontains. Строка поиска во вьюху тоже передается как get-параметр search=xxx.
И тут возникла проблема - не могу применить пэйджинацию к результатам поиска. Вернее, применить-то могу, а вот показывать правильные урлы на ссылках с номерами страниц - нет. До введения поиска ссылка строилась так:
href=“{{ request.path }}?page={{ x }}”
Теперь же надо в тех случаях, когда применен фильтр, добавлять в урл и его параметр, а если нет - то все, как раньше было.

Долго думал, соорудил такой костыль:
{% ifequal request.path request.get_full_path %}
href=“{{ request.path }}?page={{ x }}”
{% else %}
href=“{{ request.get_full_path }}&page={{ x }}”
{% endifequal %}

Работает, до тех пор, пока не потыкаешь несколько раз по страницам пэйджинации. Тогда в строке get-запроса собираются несколько параметров с именем page, что неправильно.

Подскажите, как можно красиво решить эту проблему.

Спасибо
fth
Передавайте отдельной переменной search и пишите например вот так:
href=“?search={{ search }}&page={{ page }}”
Naota
Лучше сделать апгрейт пагинатору. Я так делал. Оч удобобно, сам склеивает get параметры любые и строит умную нумерацию. Да и есть отдельный модуль джанго-пагинатор, его можно заюзать. Правда не помню как там с get.
tier
fth
Передавайте отдельной переменной search и пишите например вот так:
href=“?search={{ search }}&page={{ page }}”
да, примерно так и сделал. передаю в переменной search строку поиска, либо Null, в зависимости от.
в темплейте:
href="{{ request.path }}?{% if search %}search={{ search }}&{% endif %}page={{i}}"
работает, как надо.
всем спасибо.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB