Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 21, 2011 07:54:07

tier
От:
Зарегистрирован: 2007-11-25
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

склеивание парметров get

Приветствую всех.
Такая проблема. Страница, на ней отображаются все экземпляры модели. Их сотни, поэтому прикручена пейджинация. Номер страницы передается во вьюху, как 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, что неправильно.

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

Спасибо



Отредактировано (Янв. 21, 2011 07:54:54)

Офлайн

#2 Янв. 21, 2011 20:46:34

fth
От:
Зарегистрирован: 2010-07-26
Сообщения: 105
Репутация: +  0  -
Профиль   Отправить e-mail  

склеивание парметров get

Передавайте отдельной переменной search и пишите например вот так:
href=“?search={{ search }}&page={{ page }}”



Офлайн

#3 Янв. 21, 2011 21:30:59

Naota
От:
Зарегистрирован: 2007-06-04
Сообщения: 197
Репутация: +  0  -
Профиль   Отправить e-mail  

склеивание парметров get

Лучше сделать апгрейт пагинатору. Я так делал. Оч удобобно, сам склеивает get параметры любые и строит умную нумерацию. Да и есть отдельный модуль джанго-пагинатор, его можно заюзать. Правда не помню как там с get.



Офлайн

#4 Янв. 25, 2011 17:24:44

tier
От:
Зарегистрирован: 2007-11-25
Сообщения: 30
Репутация: +  0  -
Профиль   Отправить e-mail  

склеивание парметров get

fth
Передавайте отдельной переменной search и пишите например вот так:
href=“?search={{ search }}&page={{ page }}”
да, примерно так и сделал. передаю в переменной search строку поиска, либо Null, в зависимости от.
в темплейте:
href="{{ request.path }}?{% if search %}search={{ search }}&{% endif %}page={{i}}"
работает, как надо.
всем спасибо.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version