Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 分页器不工作_Python_Django_Pagination - Fatal编程技术网

Python 分页器不工作

Python 分页器不工作,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

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(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
对象传递给模板,因为模板未被使用。也许最好把它去掉