Django分页功能的实现

2025-10-22 20:09:06

1、打开命令行窗口,创建Django工程,使用以下命令:

django-admin startproject djpage

cd djpage

python manage.py startapp demo

Django分页功能的实现

2、使用PyCharm打开工程,在工程的同名文件夹的settings.py文件,注册应用,添加模板路径,修改部分的settings.py内容如下:

INSTALLED_APPS = [

 

   'django.contrib.admin',

 

   'django.contrib.auth',

 

   'django.contrib.contenttypes',

 

   'django.contrib.sessions',

 

   'django.contrib.messages',

 

   'django.contrib.staticfiles',

 

   'demo.apps.DemoConfig'

 

]

 

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分页功能的实现

3、在工程同名文件的urls.py文件,添加到应用的视图的路由

from django.conf.urls import url

 

from django.contrib import admin

 

from demo import views

 

urlpatterns = [

 

   url(r'^admin/', admin.site.urls),

 

   url(r'page/(?P<id>\d+)/$',views.page)

 

]

Django分页功能的实现

4、在应用的视图views.py文件,编写处理请求函数,实现分页显示一个列表的内容,这里列表也可以是查询集

from django.shortcuts import render

 

from django.core.paginator import Paginator

 

# Create your views here.

 

def page(request,id):

 

   hello_list = [{'title':'hello'},{'title':'world'},

 

                {'title':'hello1'},{'title':'world1'},

 

                {'title':'hello2'},{'title':'world2'},

 

                {'title':'hello3'},{'title':'world3'},

 

                {'title':'hello4'},{'title':'world4'}]

 

   pag = Paginator(hello_list, 2)

 

   page = pag.page(int(id))

 

   return render(request,template_name='home.html', context={'page': page})

5、在工程根目录新建templates文件夹,并创建一个home.html文件,代码如下:

<!DOCTYPE html>

 

<html lang="en">

 

<head>

 

   <meta charset="UTF-8">

 

   <title>Title</title>

 

</head>

 

<body>

 

   <ul>

 

       {% for item in page %}

 

       <li>{{item.title}}</li>

 

       {% endfor %}

 

   </ul>

 

   {% if page.has_previous %}

 

   <a href="/page/{{ page.previous_page_number }}">&lt;上一页</a>

 

   {% endif %}

 

   {# 遍历显示页码的链接 #}

 

   {% for index in page.paginator.page_range %}

 

   {# 判断是否是当前页 #}

 

       {% if index == page.number %}

 

           {{ index }}

 

       {% else %}

 

           <a href="/page/{{ index }}">{{ index }}</a>

 

       {% endif %}

 

   {% endfor %}

 

   {# 判断是否有下一页 #}

 

   {% if page.has_next %}

 

       <a href="/page/{{ page.next_page_number }}">下一页&gt;</a>

 

   {% endif %}

 

</body>

 

</html>

<!DOCTYPE html>

 

<html lang="en">

 

<head>

 

   <meta charset="UTF-8">

 

   <title>Title</title>

 

</head>

 

<body>

 

   <ul>

 

       {% for item in page %}

 

       <li>{{item.title}}</li>

 

       {% endfor %}

 

   </ul>

 

   {% if page.has_previous %}

 

   <a href="/page/{{ page.previous_page_number }}">&lt;上一页</a>

 

   {% endif %}

 

   {# 遍历显示页码的链接 #}

 

   {% for index in page.paginator.page_range %}

 

   {# 判断是否是当前页 #}

 

       {% if index == page.number %}

 

           {{ index }}

 

       {% else %}

 

           <a href="/page/{{ index }}">{{ index }}</a>

 

       {% endif %}

 

   {% endfor %}

 

   {# 判断是否有下一页 #}

 

   {% if page.has_next %}

 

       <a href="/page/{{ page.next_page_number }}">下一页&gt;</a>

 

   {% endif %}

 

</body>

 

</html>

page.paginator.page_range是页面总数

Django分页功能的实现

6、运行django服务器

python manage.py runserver

Django分页功能的实现

7、打开网页,输入

http://127.0.0.1:8000/page/1

显示效果图如下,分页成功

Django分页功能的实现

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢