【问题标题】:Django pagination giving error: Caught TypeError while rendering: 'Page' object is not iterableDjango分页给出错误:渲染时捕获TypeError:'Page'对象不可迭代
【发布时间】:2012-01-20 17:09:57
【问题描述】:

我正在使用 django 分页,如文档中所述:

查看部分是:

def list(request):
job_list = Job.objects.all()
paginator = Paginator(job_list, 25) # Show 25 jobs per page

page = request.GET.get('page',1)
try:
    jobs = paginator.page(page)
except PageNotAnInteger:
    # If page is not an integer, deliver first page.
    jobs = paginator.page(1)
except EmptyPage:
    # If page is out of range (e.g. 9999), deliver last page of results.
    jobs = paginator.page(paginator.num_pages)

return render_to_response('jobs/list.html', {"jobs": jobs})

模板是:

<div>
  {% for job in jobs %}
{# Each "contact" is a Contact model object. #}
{{ job.title|upper }}<br />

{% endfor %}

<div class="pagination">
<span class="step-links">
    {% if contacts.has_previous %}
        <a href="?page={{ contacts.previous_page_number }}">previous</a>
    {% endif %}

    <span class="current">
        Page {{ contacts.number }} of {{ contacts.paginator.num_pages }}.
    </span>

    {% if contacts.has_next %}
        <a href="?page={{ contacts.next_page_number }}">next</a>
    {% endif %}
</span>
</div>
</div>

但它给出的错误是:

In template d:\programming\django_projects\kaasib\templates\jobs\list.html, error at line 32
Caught TypeError while rendering: 'Page' object is not iterable

我是 django 的新手,这个错误看起来很普遍但很奇怪。因为在循环中有一些其他变量,而不是工作。所以请告诉是否有人对此有任何想法。

谢谢

【问题讨论】:

    标签: django pagination django-views django-pagination


    【解决方案1】:

    错误应该很清楚 - 您调用的变量 jobs 实际上包含来自分页器的 Page 对象。正如您将jobs 分配给paginator.page(x) 一样,它应该是这样的。很明显,它包含一个 Page。

    documentation 显示要做什么:

    {% for job in jobs.object_list %}
    

    等等

    【讨论】:

      猜你喜欢
      • 2011-05-08
      • 2015-09-10
      • 2011-12-10
      • 2017-06-12
      • 2020-02-28
      • 2019-07-25
      • 2012-10-14
      • 2021-06-09
      • 1970-01-01
      相关资源
      最近更新 更多