Python 分页器不工作
Paginator不工作。我编写了views.pyPython 分页器不工作,python,django,pagination,Python,Django,Pagination,Paginator不工作。我编写了views.py from .models import POST from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger from django.shortcuts import render def top(request): item = POST.objects.order_by('-created_at') page = _get_page(it
from .models import POST
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.shortcuts import render
def top(request):
item = POST.objects.order_by('-created_at')
page = _get_page(item, request.GET.get('page'))
return render(request, 'top.html',{'item':item,"page":page})
def _get_page(list_, page_no, count=1):
paginator = Paginator(list_, count)
try:
page = paginator.page(page_no)
except (EmptyPage, PageNotAnInteger):
page = paginator.page(1)
return page
在top.html中
<div>
{% for i in item %}
<div>
<h2>{{ i.title }}</h2>
<p>{{ i.index }}</p>
</div>
{% endfor %}
</div>
<div>
{% if page.has_previous %}
<a href="?page={{ page.previous_page_number }}">Previous</a>
{% endif %}
{% for num in page.paginator.page_range %}
{% if page.number == num %}
<span>{{ num }}</span>
{% else %}
<a href="?page={{ num }}">{{ num }}</a>
{% endif %}
{% endfor %}
{% if page.has_next %}
<a href="?page={{ page.next_page_number }}">Next</a>
{% endif %}
</div>
{项目%中的i为%1}
{{i.title}}
{{i.index}}
{%endfor%}
{%如果page.has_previous%}
{%endif%}
{page.paginator.page_range%}
{%如果page.number==num%}
{{num}}
{%else%}
{%endif%}
{%endfor%}
{%如果page.has_next%}
{%endif%}
当我访问top.html时,所有项目都显示在浏览器中。我想我写了一个项目在这个部分page=paginator.page(page_no)的一个页面(浏览器)中显示,但是没有发生错误,所以我真的无法理解什么是错误的。我应该如何解决这个问题?问题在for循环中-
{%for I in item%}
。您正在项
对象上循环。然而,您需要在页面
对象上循环,例如-{%for i in page%}
您的视图将项
设置为存储在POST
模型中的所有对象,并将其传递给模板。然后,模板在项
列表上迭代,因此将不分页地显示所有对象
page
是一个包含对象的单一页面,这就是模板应该迭代的内容
此外,似乎没有理由将项
,即所有POST
对象传递给模板,因为模板未被使用。也许最好把它去掉