gpt4 book ai didi

python - Django 分页 |获取页面索引中分页项目的当前索引(不是页面索引范围本身)

转载 作者:太空宇宙 更新时间:2023-11-03 19:37:48 25 4
gpt4 key购买 nike

我正在尝试使用 Django 构建一个照片库。

按类别设置。

我已按每页 n 个图像数量对类别结果进行分页。我还想在页面上使用分页器,仅显示单个图像,并为该类别中的上一张/下一张图像提供上一张/下一张按钮。

我的想法是获取图像本身的当前索引,并将其作为指向/category/CUR_IMG_ID_PAGINATION_LIST/的链接,因为对整个集合进行分页的结果将产生与分页结果中当前图像索引相同的索引.

例如,如果我想要的图像是某个类别总共 150 张图像中的第 45 张图像,那么当我对 150 张图像进行分页时,45 将是我想要的实际页码。

如果有更简单的方法,请告诉我。 Django 1.1

最佳答案

我认为你描述它的方式可以正常工作,因为在幕后我相信 Django 正在做的是使用 SQL LIMIT 来简单地让数据库完成排序的繁重工作以及要返回多少数据。因为数据库针对执行此类操作进行了优化,所以这可能是执行此操作的合理方法。

关键可能是保持查询相同,正如您所演示的,您可以使用相同的 View 来执行此操作。该 View 可以简单地具有一种模式,这是更改分页页数的一种奇特方式。

您最终可能会得到这样的网址...

# View all "landscape" items in gallery mode starting on page 3
http://www.example.com/gallery/landscape/multi/3

# View the 45th landscape item in singular mode
http://www.example.com/gallery/landscape/single/45

渲染模板时,分页器将提供 has_nexthas_previous 方法,让您知道是否可以使用渲染下一个/上一个链接。

这就是我对 View 的想法,或者类似的东西(这完全未经测试,是我凭空想象出来的)...

url(r'gallery/(?P<category>.+)/(?P<mode>.+)/(?P<offset>\d+)$', 'whatever.views.media_gallery'),

def media_gallery(request, category, mode, offset):
"""
Render a media gallery.
category = media item category filter
mode = ( multi | single )
offset = The pagination offset in multi mode or the media ID in single mode
"""

if mode == 'multi':
per_page = 20 # or however many items per page

elif mode == 'single':
per_page = 1
else:
pass # handle this however

# Queryitems
raw_media_items = Media.objects.filter(category=category)

# Setup paginator
paginator = Paginator(raw_media_items, per_page)

try:
# in multi mode offset is the page offset
# in single mode offset is the media ID
page = int(offset)
except:
page = 1

try:
media_items = paginator.page(page)
except (EmptyPage, InvalidPage):
media_items = paginator.page(paginator.num_pages)

if len(paginated_items) == 1:
# Render single view
return render_to_response('gallery/gallery_view.html',
{ 'media_item':media_items[0], 'paginator':paginator },
context_instance=RequestContext(request) )
else:
# Render gallery view
return render_to_response('gallery/gallery_view.html',
{ 'media_items':media_items, 'paginator':paginator },
context_instance=RequestContext(request) )

关于python - Django 分页 |获取页面索引中分页项目的当前索引(不是页面索引范围本身),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2549549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com