分页返回错误的对象(不可迭代?)

时间:2011-07-14 01:05:05

标签: django pagination

我正在尝试返回分页对象,然后遍历它们。看起来非常简单。显然,我错过了一些东西。你能发现错误吗?

观点:

def thumbnails(request):
    page = request.GET.get('page', 1)
    album = request.GET.get('a', None )

    if (album):
        objects = Album_Photos.objects.filter(id=album)
    else:
        objects = None

    if (objects):
        paginator = Paginator(objects, 25)

    try:
        photos = paginator.page(page)
    except PageNotAnInteger:
        photos = paginator.page(1)
    except EmptyPage:
        photos = None #paginator.page(paginator.num_pages)

    return render_to_response('photos/thumbnails.html', {'photos': photos}, context_instance = RequestContext(request))

模板:

{% if photos %}
    {% for photo in photos %}
        <img src="{{photo.original.url}}">
    {% endfor %}
{%endif%}

错误:

TemplateSyntaxError at /photos/thumbnails/
Caught TypeError while rendering: 'Page' object is not iterable

1 {% if photos %}
2   {% for photo in photos %}
3       <img src="{{photo.original.url}}">
4   {% endfor %}
5 {%endif%}

2 个答案:

答案 0 :(得分:13)

嗯,与Django文档中的示例(至少在我的情况下)不同,您必须将.object_list附加到该Page对象。

{% if photos %}
    {% for photo in photos.object_list %}
        <img src="{{photo.original.url}}">
    {% endfor %}
{%endif%}

答案 1 :(得分:0)

这在django中有所改变:介于版本1.3和1.6之间,Paginator.Page已经可以迭代。

如果您按照当前文档中的示例操作,在使用较旧版本的django时,会出现此错误。

要么添加.object_list作为Brian D.说,要么升级django。