Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » как организовать разбиение по страницам? [RSS Feed]

#1 Май 27, 2010 16:13:24

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

как организовать разбиение по страницам?

надо вывести данные, разбив их на части, т.е. разбить по страницам
нашел, что 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 что-то даёт на этот случай?



Офлайн

#2 Май 27, 2010 16:31:41

regall
От: Киев
Зарегистрирован: 2008-07-17
Сообщения: 1583
Репутация: +  3  -
Профиль   Отправить e-mail  

как организовать разбиение по страницам?

Мой вариант решения:
Можно через URL'ы решить вопрос указания страницы.

...
url(r'^mypage/(?P<page>(p\d*){0,1})$', 'my_view'),
...
Потом в виде в из брать номер страницы:
...
page_number = kwargs.get('page',1)
..
Потом в зависимости от номера страницы в контекст передавать список объектов которые будете отображать.

P.S.
Чтобы каждый раз так не делать, рекомендую создать декоратор на виды, который будет принимать параметром название переменной, в которой хранится список или queryset объектов, которые необходимо отображать, количество объектов на страницу и еще что вам там нужно, все это дело соответственно фильтровать.



Отредактировано (Май 27, 2010 16:34:59)

Офлайн

#3 Май 27, 2010 17:18:29

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

как организовать разбиение по страницам?

regall
Можно через URL'ы решить вопрос указания страницы.
а в чём преимущество URL'ы перед request.GET?



Офлайн

#4 Май 27, 2010 19:07:34

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

как организовать разбиение по страницам?

http://docs.djangoproject.com/en/dev/topics/pagination/ читали?
в шаблон падает paginator и page_obj с которыми и работай

Офлайн

#5 Май 27, 2010 19:25:06

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

как организовать разбиение по страницам?

нет, не читал. плохо ориентируюсь в Dj доке, пока.
видимо, слишком долго сидел в MSDN. спасибо, сейчас почитаю.



Офлайн

#6 Май 27, 2010 21:40:31

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

как организовать разбиение по страницам?

да, напрасно я свою поделку воял, надо на Paginator переходить.

подскажите еще, пожалуйста, можно ли на уровне шаблона сгенерировать серию тегов типа

<a href="?page=N ...
где N изменялся бы от 1 до contacts.paginator.num_pages, т.е. сгенерировать последовательность чисел от 1 до n.
это если я хочу изобразить прыжки на все страницы, а не только на предыдущую и следующую. или мне придётся передать дополнительный список в шаблон?



Офлайн

#7 Май 27, 2010 22:31:58

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

как организовать разбиение по страницам?

и ещё вопрос появился:
следующий код:

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 надо во что-то конвертировать?
подскажите, плиз



Офлайн

#8 Май 28, 2010 00:13:49

Александр Кошелев
От: Москва
Зарегистрирован: 2007-02-03
Сообщения: 1724
Репутация: +  2  -
Профиль   Отправить e-mail  

как организовать разбиение по страницам?

list_detail.object_list сам занимается разбиением на страницы, если вы задали два этих параметра



Офлайн

#9 Май 28, 2010 00:45:48

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

как организовать разбиение по страницам?

спасибо,
трудно было бы догадаться. с ленцой, однако, доку на Django пишут. получается, чтобы понять элементарное надо исходники прорубать, если бы не добрые люди с форумов



Офлайн

#10 Май 28, 2010 09:12:15

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2267
Репутация: +  41  -
Профиль   Отправить e-mail  

как организовать разбиение по страницам?

если есть сложности с англ язом читай http://djbook.ru/

Офлайн

  • Начало
  • » Django
  • » как организовать разбиение по страницам?[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version