问题描述
我正在研究Django 3.0提供的分页功能,我想知道如何从循环内部实现分页功能。
例如,使用此片段,在该片段中,我根据选定的类别检索图像集合并显示图像。每个类别有约800张图像,共有12个类别。我想要的是页面顶部的类别名称,大约20张图像,页面指示符。
class MyPage(View):
def get(self,request):
q_dict = request.GET
sets = [] # the full data set to display on the page - a list of dictionaries
for category in categories:
document_ids = list(DocumentMetaData.objects.filter(Metadata__has_key=category).values('document_id',flat=True))
images = []
for doc_id in document_ids:
image = Documentimage.objects.get(document=doc_id)
params = {'ID': doc_id,'Category': category}
detail_url = encode_urls('details.html',params)
urls = {'image_url': image.xsmall_file.url,'detail_url': detail_url}
images.append(urls)
# the dictionary contains the data to display on the page
sets.append({'header': category.name,'images': images,})
paginator = Paginator(sets,20) # 20 images in each page
if 'page' in q_dict:
page = q_dict['page']
else:
page = 1
try:
page_obj = paginator.page(page)
except PageNotAnInteger:
# If page is not an integer deliver the first page
page_obj = paginator.page(1)
except EmptyPage:
# If page is out of range deliver last page of results
page_obj = paginator.page(paginator.num_pages)
ctx['page'] = page
ctx['page_obj'] = page_obj
ctx['sets'] = sets
return render(request,'memorabilia/categoriesintermediate.html',context=ctx)
模板:
{% for set in sets %}
<div class="row">
<div class="col-md-12">
<h5>{{ set.header }}<h5>
</div>
</div>
<div class="masonry">
{% for image in set.images %}
<div class="item" style="Box-shadow: 2px 2px 4px 0px #ccc;">
<a href="{{ image.detail_url }}"><img src="{{ image.image_url }}"></a>
</div>
{% endfor %}
</div>
{% endfor %}
<div class="pagination">
<span class="step-links">
{% if page_obj.has_prevIoUs %}
<a href="?page=1">« first</a>
<a href="?page={{ page_obj.prevIoUs_page_number }}">prevIoUs</a>
{% endif %}
<span class="current">
Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
</span>
{% if page_obj.has_next %}
<a href="?page={{ page_obj.next_page_number }}">next</a>
<a href="?page={{ page_obj.paginator.num_pages }}">last »</a>
{% endif %}
</span>
</div>
该页面显示所有800 x 12 = 9,600张图像,并在页面底部显示一个简单的Page 1 of 1。看来我无法使用分页器中的设置列表。但是,我不确定如何在图像循环或类别循环中使用分页器。任何建议将不胜感激!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)