Найти - Пользователи
Полная версия: Пагинация
Начало » Django » Пагинация
1
lepiloff
Проблема в том, что на каждой странице пагинации отображаются все существующие статьи

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 %}
VadimK
А как вывод статей то выглядит ? Так как в приведенном примере только вывод меню навигации.
lepiloff
Вывод статей

 {% 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 %}
VadimK
В темплейте надо использовать contents не content_list для вывода.
lepiloff
Да, верно. Спасибо!
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