2011-12-14 28 views
1

ではありません、私はマニュアルに語ったように、Djangoのページネーションを使用しています:Djangoのページネーション:キャッチ例外TypeErrorレンダリング中:「ページ」オブジェクトが反復可能

ビューの一部です:

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の新機能ですが、このエラーは一般的ですが非常に奇妙です。ループの中には仕事ではなく他の変数があるからです。だから、それについて誰かが考えているかどうかを教えてください。

おかげ

答えて

3

エラーが明確でなければなりません - あなたはjobs呼ばれてきた変数は、実際にページネータからPageオブジェクトが含まれています。 jobspaginator.page(x)に割り当てられているとおり、それはどんなものであるべきですか?それは明らかにページを含んでいます。

documentationは何をすべきかを示しています

{% for job in jobs.object_list %} 

など

関連する問題