D19 使用分页(Paginator) - 首页跟个人文件页

使用Django内建的paginator分页类别
将原本的Quryset物件(doc_warehouse.objects.all().order_by("id"))丢进Paginator内
他会用你给的limit去切资料
然後将每一页都指定给Doc_warehouse保持我们原本的templates内的逻辑可以保持不变
doc_info/views.py

from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger

def doc_main(request):
    doc_all = doc_warehouse.objects.all().order_by("id")
    limit = 20
    page = request.GET.get('page', 1)
    paginator = Paginator(doc_all, limit)
    try:
        Doc_warehouse = paginator.page(page)  
    except PageNotAnInteger: 
        Doc_warehouse = paginator.page(1) 
    except EmptyPage:  
        Doc_warehouse = paginator.page(paginator.num_pages) 
    context = {
        'Doc_warehouse': Doc_warehouse,
    }
    return render(request, 'doc/main.html', context)
    
@login_required()
def doc_user_list(request):
    user = request.user
    doc_filter = doc_warehouse.objects.filter(user_id=user.id).order_by("id")
    limit = 5
    page = request.GET.get('page', 1)
    paginator = Paginator(doc_filter, limit)
    try:
        Doc_warehouse = paginator.page(page)  
    except PageNotAnInteger: 
        Doc_warehouse = paginator.page(1) 
    except EmptyPage:  
        Doc_warehouse = paginator.page(paginator.num_pages) 
    context = {
        'Doc_warehouse': Doc_warehouse,
    }
    return render(request, 'doc/user_list.html', context)

templates的最下面增加以下
templates/main.html & templates/user_list.html

<p>
{% for page_number in Doc_warehouse.paginator.page_range %}
    {% ifequal page_number  Doc_warehouse.number %}
    {{ page_number }}
    {% else %}
    <a href="?page={{ page_number }}">{{ page_number }}</a>
    {% endifequal %}
{% endfor %}
</p>

效果呈现如下
Imgur
Imgur


<<:  Eloquent ORM - 写入资料

>>:  D11 - 「数位×IN×OUT」:数位功能

离职倒数14天:2020年学到最多的两件事,解答了我人生最大的困惑

今年年初回顾2020年时的日记里写着,去年学到最多的两件事:一个是趁着肺炎,工作後第一次回家长住,一...

认识 .NET

干古 微软开发的一个跨平台开源的开发框架, 以前叫 .NET Core, 也继承 .Net Fram...

善用 Linux man-pages

Linux man-pages 提供与 Linux kernel 以及 GNU C library ...

[Day 7] Course 2_Ask Questions - 初探试算表(Spreadsheets)

《30天带你上完 Google Data Analytics Certificate 课程》系列将...

资料抽象与封装(Data Abstraction vs Encapsulation)

人们经常会被资料抽象和封装混淆,把抽象的概念当作封装或信息隐藏。事实并非如此。以下定义来自 ISO/...