Найти - Пользователи
Полная версия: как организовать разбиение по страницам?
Начало » Django » как организовать разбиение по страницам?
1 2
tur75
надо вывести данные, разбив их на части, т.е. разбить по страницам
нашел, что list_detail.object_list принимает
paginate_by= N,        page=N
Но ещё же надо поставить в шаблон переходы на страницы, что-то вроде:
<a href="?page=3&param1=7,2,1&param2=3,4,5,6" </a>
и еще потом GETом их расшифровать и обработать.
это всё вручную надо делать или Django что-то даёт на этот случай?
regall
Мой вариант решения:
Можно через URL'ы решить вопрос указания страницы.
...
url(r'^mypage/(?P<page>(p\d*){0,1})$', 'my_view'),
...
Потом в виде в из брать номер страницы:
...
page_number = kwargs.get('page',1)
..
Потом в зависимости от номера страницы в контекст передавать список объектов которые будете отображать.

P.S.
Чтобы каждый раз так не делать, рекомендую создать декоратор на виды, который будет принимать параметром название переменной, в которой хранится список или queryset объектов, которые необходимо отображать, количество объектов на страницу и еще что вам там нужно, все это дело соответственно фильтровать.
tur75
regall
Можно через URL'ы решить вопрос указания страницы.
а в чём преимущество URL'ы перед request.GET?
slav0nic
http://docs.djangoproject.com/en/dev/topics/pagination/ читали?
в шаблон падает paginator и page_obj с которыми и работай
tur75
нет, не читал. плохо ориентируюсь в Dj доке, пока.
видимо, слишком долго сидел в MSDN. спасибо, сейчас почитаю.
tur75
да, напрасно я свою поделку воял, надо на Paginator переходить.

подскажите еще, пожалуйста, можно ли на уровне шаблона сгенерировать серию тегов типа
<a href="?page=N ...
где N изменялся бы от 1 до contacts.paginator.num_pages, т.е. сгенерировать последовательность чисел от 1 до n.
это если я хочу изобразить прыжки на все страницы, а не только на предыдущую и следующую. или мне придётся передать дополнительный список в шаблон?
tur75
и ещё вопрос появился:
следующий код:
flat_recset = FlatSell.objects.all()
paginator = Paginator(flat_recset, 3)
contacts = paginator.page(2)
return list_detail.object_list(request, queryset = contacts,...
даёт ошибку: ‘Page’ object has no attribute ‘_clone’
и в примере из Dj-doc приведен render_to_response. т.е. list_detail.object_list можно подумать, не подходит для этих дел.
а зачем тогда он принимает paginate_by= N и page=N ?
что-то я недопонял. может contacts надо во что-то конвертировать?
подскажите, плиз
Александр Кошелев
list_detail.object_list сам занимается разбиением на страницы, если вы задали два этих параметра
tur75
спасибо,
трудно было бы догадаться. с ленцой, однако, доку на Django пишут. получается, чтобы понять элементарное надо исходники прорубать, если бы не добрые люди с форумов
slav0nic
если есть сложности с англ язом читай http://djbook.ru/
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