Ссылки на самом деле "закрыты" заголовком. Вы можете использовать CSS-свойство pointer-events: none
, чтобы пройти через это. Здесь ответили здесь.
Хмм ... Я вижу из вашего комментария, что вы не хотите использовать параметр ol 'GET, который это то, что django.core.paginator было написано для использования. Чтобы сделать то, что вы хотите, я не могу придумать лучшего способа, чем предварительно вычислить страницу, на которой находится каждый вопрос. Например, ваш вид в конечном итоге будет выглядеть примерно так:
ITEMS_PER_PAGE = 20
def show_question(question_pk):
questions = Question.objects.all()
for index, question in enumerate(questions):
question.page = ((index - 1) / ITEMS_PER_PAGE) + 1
paginator = Paginator(questions, ITEMS_PER_PAGE)
page = paginator.page(questions.get(pk=question_pk).page)
return render_to_response('show_question.html', { 'page' : page })
Чтобы выделить текущую страницу в шаблоне, вы должны сделать что-то вроде
{% for i in page.paginator.page_range %}
{% ifequal i page.number %}
<!-- Do something special for this page -->
{% else %}
<!-- All the other pages -->
{% endifequal %}
{% endfor %}
. Что касается элементов, у вас будет два разных object_lists для работы. ..
page.object_list
будет объектами на текущей странице, а
page.paginator.object_list
будет всеми объектами, независимо от страницы. Каждый из этих элементов будет иметь переменную «page», которая сообщит вам, на какой странице они находятся.
Все это говорит о том, что вы делаете, звучит нетрадиционно. Вы можете переосмыслить, но в любом случае, удачи.
django-pagination должен делать то, что вы хотите, и поставляется в красивой упаковке, которую можно просто подключить и использовать. По сути, он перемещает код из ваших представлений в шаблоны и промежуточное программное обеспечение.
РЕДАКТИРОВАТЬ: Я только что видел ваше редактирование.
Вы можете получить текущие объекты на странице, используя {% autopaginate object_list%}
, который заменяет object_list
текущими объектами для любой данной страницы. Вы можете выполнить итерацию по нему, и если вы хотите первое, вы сможете обработать его как список и выполнить object_list [0]
.
Если вы хотите сохранить это в своих представлениях, вы можете сделайте что-то вроде этого:
def show_question(question_pk):
questions = Question.objects.all()
paginator = Paginator(questions, 20)
return render_to_response('show_question.html', { 'page' : paginator })
В своем шаблоне вы можете получить доступ к текущей странице, выполнив:
# Gives you the starting index for that page.
# For example, 5 objects, and you're on the second page.
# start_index will be 3.
page.start_index
# You can access the current page number with:
# 1-based index
page.number
С этим вы сможете делать все, что вам нужно. Здесь есть пара хороших примеров .