Ошибка разбиения по страницам в Django: ошибка TypeError при рендеринге: объект 'Page' не повторяется - PullRequest
1 голос
/ 15 декабря 2011

Я использую пагинацию 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, и эта ошибка кажется общей, но очень странной.Потому что в цикле есть другая переменная, а не задание.Поэтому, пожалуйста, скажите, есть ли у кого-нибудь какие-либо идеи по этому поводу.

спасибо

1 Ответ

3 голосов
/ 15 декабря 2011

Ошибка должна быть понятной - переменная, которую вы назвали jobs, на самом деле содержит объект Page из paginator. Что и должно быть, как вы назначили jobs на paginator.page(x). Очевидно, он содержит страницу.

Документация показывает, что делать:

{% for job in jobs.object_list %}

и т.д.

...