Форум сайта python.su
Проблема в том, что на каждой странице пагинации отображаются все существующие статьи
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})
{% if contents.has_other_pages %} <ul class="pagination"> {% if contents.has_previous %} <li><a href="?page={{ contents.previous_page_number }}">«</a></li> {% else %} <li class="disabled"><span>«</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 }}">»</a></li> {% else %} <li class="disabled"><span>»</span></li> {% endif %} </ul> {% endif %}
Отредактировано lepiloff (Ноя. 25, 2017 20:56:11)
Офлайн
А как вывод статей то выглядит ? Так как в приведенном примере только вывод меню навигации.
Офлайн
Вывод статей
{% 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 %}
Офлайн
В темплейте надо использовать contents не content_list для вывода.
Офлайн
Да, верно. Спасибо!
Офлайн