求解关于django分页

Jun_Cheng_ 2018-01-31 02:15:02
各位大神,请问django怎么实现分页显示?比如我有20页的数据,每次只显示5个??? 我是这样想得,判断当前页面,如: 1 2 34 5 然后计算4前面的页数,如果大于二 那就把第一个去掉,后面补一个..... 感觉这个思路有点智障。。。。 麻烦各位大神能给我个详细点的思路..

拜托拜托!

这种:
上一页 1 2 3 4 5 下一页 ------>> 上一页 2 3 4 5 6 下一页
...全文
261 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Jun_Cheng_ 2018-01-31
  • 打赏
  • 举报
回复
引用 1 楼 u012536120 的回复:
这种不是直接在网上搜搜就好了吗(网上做的比我们好多了) 我的思路:比如当前页是4, 1,根据前加2页,后加2页,得到列表[2,3,4,5,6] 2,判断前面2页有没有小于1,有的话,就让列表向右滑动,还是保持5个页 3,盘点后门2页有没有大于最大页,有的话,就让列表向左滑动,还是保持5个页 4,做完2、3,然后把列表显示出来就好了。
试过在网上搜,但是都是JS JAVA的,看的不是很明白
Jun_Cheng_ 2018-01-31
  • 打赏
  • 举报
回复
引用 2 楼 xpresslink 的回复:
Django自己带分页控件直接用就行了。

# views.py
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
def post_list(request):
    object_list = Post.published.all()
    paginator = Paginator(object_list, 3) # 3 posts in each page
    page = request.GET.get('page')
    try:
        posts = paginator.page(page)
    except PageNotAnInteger:
    # If page is not an integer deliver the first page
        posts = paginator.page(1)
    except EmptyPage:
    # If page is out of range deliver last page of results
        posts = paginator.page(paginator.num_pages)
    return render(request,'blog/post/list.html',
    {'page': page,'posts': posts})
这个是一次显示全部页面吧?
混沌鳄鱼 2018-01-31
  • 打赏
  • 举报
回复
# pagination.html

<div class="pagination">
	<span class="step-links">
		{% if page.has_previous %}
			<a href="?page={{ page.previous_page_number }}">Previous</a>
		{% endif %}
		<span class="current">
			Page {{ page.number }} of {{ page.paginator.num_pages }}.
		</span>
		{% if page.has_next %}
			<a href="?page={{ page.next_page_number }}">Next</a>
		{% endif %}
	</span>
</div>

在模板里插入这个分页 {% block content %} ... {% include "pagination.html" with page=posts %} {% endblock %}
混沌鳄鱼 2018-01-31
  • 打赏
  • 举报
回复
Django自己带分页控件直接用就行了。

# views.py
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
def post_list(request):
    object_list = Post.published.all()
    paginator = Paginator(object_list, 3) # 3 posts in each page
    page = request.GET.get('page')
    try:
        posts = paginator.page(page)
    except PageNotAnInteger:
    # If page is not an integer deliver the first page
        posts = paginator.page(1)
    except EmptyPage:
    # If page is out of range deliver last page of results
        posts = paginator.page(paginator.num_pages)
    return render(request,'blog/post/list.html',
    {'page': page,'posts': posts})
sanGuo_uu 2018-01-31
  • 打赏
  • 举报
回复
这种不是直接在网上搜搜就好了吗(网上做的比我们好多了) 我的思路:比如当前页是4, 1,根据前加2页,后加2页,得到列表[2,3,4,5,6] 2,判断前面2页有没有小于1,有的话,就让列表向右滑动,还是保持5个页 3,盘点后门2页有没有大于最大页,有的话,就让列表向左滑动,还是保持5个页 4,做完2、3,然后把列表显示出来就好了。

37,720

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧