【问题标题】:Pagination Django One Image分页 Django 一张图片
【发布时间】:2010-08-11 22:27:58
【问题描述】:

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

我怎样才能每页只有一个图像,例如我的 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>

【问题讨论】:

    标签: django pagination


    【解决方案1】:

    您在视图代码中定义 urllist 太早了,还没有限制您在模板中循环的 url 列表。试试:

    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

    【讨论】:

    • 非常感谢您的快速回答,但不幸的是,这并没有改变问题。我也试过你的版本:% url for url in stimuli。但这给了我一个例外。
    • 你能解释一下我应该如何以及在哪里插入 {{ MEDIA_URL }}
    • @MacPython - 如果您在分配urllist 的行之前打印出stimuli.object_list] 会得到什么?
    • 对不起。我不明白这个问题。我认为 object_list 是我必须从数据库中查询数据的时候。打印出来到底是什么意思?对不起,我的无知。再次感谢您的帮助。
    • 对不起。没有看到您所做的更改。这为我做到了: % url for stimuli.object_list 中的 url 太棒了。你是主人!
    猜你喜欢
    • 2019-10-24
    • 1970-01-01
    • 1970-01-01
    • 2019-11-20
    • 2021-11-13
    • 2017-03-21
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    相关资源
    最近更新 更多