Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 25, 2017 20:48:48

lepiloff
От: Минск
Зарегистрирован: 2017-09-04
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Пагинация

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

views.py

 from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
def index(request):
    content_list = Post.objects.all()
    page = request.GET.get('page', 1)
    paginator = Paginator(content_list, 8)
	
    
    try:
        contents = paginator.page(page)
    except PageNotAnInteger:
        # If page is not an integer, deliver first page.
        contents = paginator.page(1)
    except EmptyPage:
        # If page is out of range (e.g. 9999), deliver last page of results.
        contents = paginator.page(paginator.num_pages)
	
    return render(request, "index.html", {'content_list':content_list, 'contents':contents})

templates

 {% if contents.has_other_pages %}
  <ul class="pagination">
    {% if contents.has_previous %}
      <li><a href="?page={{ contents.previous_page_number }}">&laquo;</a></li>
    {% else %}
      <li class="disabled"><span>&laquo;</span></li>
    {% endif %}
    {% for i in contents.paginator.page_range %}
      {% if contents.number == i %}
        <li class="active"><span>{{ i }} <span class="sr-only">(current)</span></span></li>
      {% else %}
        <li><a href="?page={{ i }}">{{ i }}</a></li>
      {% endif %}
    {% endfor %}
    {% if contents.has_next %}
      <li><a href="?page={{ contents.next_page_number }}">&raquo;</a></li>
    {% else %}
      <li class="disabled"><span>&raquo;</span></li>
    {% endif %}
  </ul>
{% endif %}

Отредактировано lepiloff (Ноя. 25, 2017 20:56:11)

Офлайн

#2 Ноя. 25, 2017 23:34:44

VadimK
Зарегистрирован: 2013-07-03
Сообщения: 199
Репутация: +  16  -
Профиль   Отправить e-mail  

Пагинация

А как вывод статей то выглядит ? Так как в приведенном примере только вывод меню навигации.

Офлайн

#3 Ноя. 25, 2017 23:37:19

lepiloff
От: Минск
Зарегистрирован: 2017-09-04
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Пагинация

Вывод статей

 {% if content_list %}
	  {% for list in content_list %}
	 <div  class = "tizer">
		<h2 class="post-title">
		    <a href="{% url 'content:detail' list.slug %}">{{ list.title }}</a>
		</h2>
		<div class="blogpost">
		  <p>
		    <i class="fa fa-user-plus" aria-hidden="true"></i>
		    {{ list.author }}
		  </p>
		 <p> 
		 <i class="fa fa-calendar"></i>
		  {{ list.created_date }}
		</p>
		</div>
         <div style="clear: left"></div>
		<div class = "preview">
		  {% autoescape off %}{{ list.text|truncatewords_html:20 }}{% endautoescape %}
		</div>
		
		<div>
		<a class="button-next" href="{% url 'content:detail' list.slug %}" role="button">Подробней</a>
		</div>
	</div>
	<div style="clear: both"></div>
	 <hr>
	  {% endfor %}
	  
	{% endif %}

Офлайн

#4 Ноя. 26, 2017 01:58:30

VadimK
Зарегистрирован: 2013-07-03
Сообщения: 199
Репутация: +  16  -
Профиль   Отправить e-mail  

Пагинация

В темплейте надо использовать contents не content_list для вывода.

Офлайн

#5 Ноя. 26, 2017 09:56:50

lepiloff
От: Минск
Зарегистрирован: 2017-09-04
Сообщения: 13
Репутация: +  0  -
Профиль   Отправить e-mail  

Пагинация

Да, верно. Спасибо!

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version