django实战(一)--dango自带的分页(极简)

注意,我将templates定义在项目的同级目录下:

在settings.py中配置

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR,'templates')],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
            ],
        },
    },
]

django实战(一)--dango自带的分页(极简)_第1张图片

urls.py

from django.urls import path
from . import views

app_name='person'
urlpatterns=[
    path('test/', views.test),
    path('test/',views.test,name='test'),
]

views.py

from django.shortcuts import render
from .models import Book
from django.core.paginator import  Paginator

def test(request,pn=1):
    #获取所有的查询
    book_obj=Book.objects.all()
    #传给paginator,每页显示两条
    paginator=Paginator(book_obj,2)
    #pn是显示第几页,默认是第一页
    page=paginator.page(pn)
    #将page通过context传给前端
    context={'page':page}
    return render(request,'test/test.html',context=context)

models.py

class Book(models.Model):
    id = models.AutoField(primary_key=True)
    title = models.CharField(max_length=128,null=False)

    def __str__(self):
        return "book_title:{}".format(self.title)    

django实战(一)--dango自带的分页(极简)_第2张图片

 

 tempates/test/test.html


"en">

    "UTF-8">
    "viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    "X-UA-Compatible" content="ie=edge">
    Document
    


"position: absolute;top: 35%;left: 40%;"> "1"> {% for item in page %} {% endfor %}
id title
"120px">{{item.id}} "120px">{{item.title}}
"position: absolute;top: 50%;left: 44%"

最终效果(不要在意css,不大美观,哈哈)

django实战(一)--dango自带的分页(极简)_第3张图片

 

 在显示下网页源代码:


"en">

    "UTF-8">
    "viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    "X-UA-Compatible" content="ie=edge">
    Document
    


"position: absolute;top: 35%;left: 40%;"> "1">
id title
"120px">3 "120px">java
"120px">6 "120px">zabbix从入门到精通
"position: absolute;top: 50%;left: 44%"

总结:这是实现分页最简单的了,至于美观,可以结合bootstrap来进行美化。

技术总结:最基本的是Paginator里面的一些值(当然此处我并没有去尝试其他的,有兴趣的可以去搜下,也挺简单的)。然后其中的一个就是前端pn值如何通过url传值给后端,注意标蓝的地方。

学习不易,且学且珍惜!!!

你可能感兴趣的:(django实战(一)--dango自带的分页(极简))