Django的page_range()函数是一个分页方法中的函数,用于获取当前页码的前后一定范围内的页码。该函数的作用是在网站分页时,为了方便用户的浏览,提供当前页的前后n个页码,让用户能够更加便利地进行页面的浏览。
使用方法:
在Django中,可以在 views.py 视图文件中的某个视图函数中使用 page_range() 函数。在该函数中,我们需要先获取当前页的页码,然后利用page_range()方法获取当前页前后n个页码,最后将获取到的页码变量传递到模板文件中,以便在网页上展示。
具体代码如下:
from django.core.paginator import Paginator
def your_view(request):
# 获取当前页码,需要指定默认值
page_num = request.GET.get('page', 1)
# 使用Paginator类进行分页
paginator = Paginator(queryset, 10) # 每页显示10条数据
# 获取当前页码的前后2个页码
page_range_list = paginator.page_range[int(page_num) - 1 : int(page_num) + 1]
# 将页码变量传递到模板文件中
context = {'paginator': paginator, 'page_range_list': page_range_list}
return render(request, 'your_template.html', context=context)
在模板中可以这样遍历页码,使用模板标签 for
:
{% for num in page_range_list %}
<li class="page-item {% if page_obj.number == num %}active{% endif %}">
<a class="page-link" href="?page={{ num }}">{{ num }}</a>
</li>
{% endfor %}
下面提供两个使用 page_range() 的实例:
-
加载新闻列表。假设我们的网站提供新闻列表,每页显示10条新闻。我们需要提供一个分页功能,让用户可以浏览到所有的新闻。在网站新闻列表中,我们可以使用 page_range() 获取当前页的前后n个页码,并在前端将其呈现出来。
-
电影列表。我们需要在电影列表中提供分页功能。每页显示12部电影。我们需要获取当前页的前后2个页码,并根据这些页码在前端显示出来。这样用户可以快速切换到其他电影页面,更加便利地进行浏览。