There is new option to create pagination range - get_elided_page_range https://docs.djangoproject.com/en/3.2/ref/paginator/#django.core.paginator.Paginator.get_elided_page_range
我应该如何使用它?我如何设置参数?我正在使用CBV列表视图。我尝试了https://nemecek.be/blog/105/how-to-use-elided-pagination-in-django-and-solve-too-many-pages-problem,但它不适合我。
我有81页,当前页是10页。问题是我总是有范围1 2 3 4 ... 80 81我做错了什么?
浏览次数. py
class TrailersListView(ListView):
queryset = Trailer.objects.all()
paginate_by = 10
模板. html
{% for i in paginator.get_elided_page_range %}
{% if page_obj.number == i %}
<li class="active page-item">
<span class="page-link">{{ i }}</span>
</li>
{% else %}
{% if i == paginator.ELLIPSIS %}
<li class="page-item">
<span class="page-link">{{ paginator.ELLIPSIS }}</span>
</li>
{% else %}
<li class="page-item">
<a class="page-link" href="?page={{ i }}">{{ i }}</a>
</li>
{% endif %}
{% endif %}
{% endfor %}
2条答案
按热度按时间cnjp1d6j1#
页码没有传递给“get_elided_page_range”方法,它一直使用默认值(1),所以我创建了一个自定义标记来传递一个数字。
应用程序名称/模板标签/分页器标签.py
模板.html
您可以添加其他参数,例如:
第一个月
8hhllhi22#
如果您使用的是基于类的视图,如问题示例中的
ListView
,那么如果您通过设置paginate_by
成员触发分页,则get_context_data
方法中提供了page_obj
对象。通过此方法,您可以在Paginator
上调用get_elided_page_range
,以便为正在呈现的模板设置额外的上下文。示例:
然后可以从模板中访问
paginator_range
。用法说明:此方法返回一个生成器,该生成器生成
int
(有效页码)或str
(...)(无效页码)。