分页Django一个图像

时间:2010-08-11 14:18:40

标签: django pagination

我想要一个“分页”,每页我会有一个图像。我目前的代码粘贴在下面。 Unfortunatley现在我在每个分页上获得所有图像。这已经朝着正确的方向迈出了一步,但并不是我想要的。

我怎样才能每页只有一个图像,例如我的os.listdir的图像1以及下面那个os.listdir中下一个图像的链接?

views.py

def p_main_page(request):
    stimuli_list=os.listdir('/Users/Me/Images')
    p = Paginator(stimuli_list, 1)
    urllist = ['/site_media/Images/%s' % url for url in stimuli_list]
    try:
        page = int(request.GET.get('page', '1'))
    except ValueError:
        page = 1
    try:
        stimuli = p.page(page)
    except (EmptyPage, InvalidPage):
        stimuli = p.page(p.num_pages)
    return render_to_response('stimulilist.html', {"stimuli": stimuli,
                                                "urllist": urllist})

模板:

<html>

<head>
<title> Stimuli </title>
</head>

<body>

<p>
{% for url in urllist %}

<img src='{{ url }}' />

{% endfor %}

</p>

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

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

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

<body>
</html>

1 个答案:

答案 0 :(得分:0)

在限制您在模板中循环的网址列表之前,您在视图代码中过早地定义了urllist。尝试:

def p_main_page(request):
    stimuli_list=os.listdir('/Users/Me/Images')
    p = Paginator(stimuli_list, 1)
    try:
        page = int(request.GET.get('page', '1'))
    except ValueError:
        page = 1
    try:
        stimuli = p.page(page)
    except (EmptyPage, InvalidPage):
        stimuli = p.page(p.num_pages)
    urllist = ['/site_media/Images/%s' % url for url in stimuli.object_list]
    return render_to_response('stimulilist.html', {"stimuli": stimuli,
                                                "urllist": urllist})

顺便提一下,您最好在模板中使用{{ MEDIA_URL }},而不是在视图中对网站媒体的路径进行硬编码,我可能不会在视图中生成urllist完全没有,只是在模板中循环stimular.object_list