Django实现网页分页功能


Posted in Python onOctober 31, 2019

本文实例为大家分享了Django实现分页功能,为了容易区别功能的展现,先创建一个数据库,用数据库中的数据做演示。

创建数据库步骤如下:

1.创建模型,代码如下:

from django.db import models

# Create your models here.
class Goods(models.Model):
 name = models.CharField(max_length=100)
 des = models.CharField(max_length=1000)
 class Meta:
  db_table = 'goods'

2.向数据库中添加数据,代码如下:

from django.http import HttpResponse

from .models import Goods
import random
# Create your views here.

def index(request):
 for x in range(200):
  good = Goods(name='good%s'%x,des='该商品物美价廉,现在只需要{}元'.format(random.randint(10,100)))
  good.save()
 return HttpResponse('数据添加成功')

添加之后将代码就可以注释掉了,我们演示的时候再新建一个select接口作为演示界面。

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

# Create your views here.

def select(request):
 # 查询数据库中的所有数据
 good_list = Goods.objects.all()
 # 值1:所有的数据
 # 值2:每一页的数据
 # 值3:当最后一页数据少于n条,将数据并入上一页
 paginator = Paginator(good_list,12,3)

 try:
  # GET请求方式,get()获取指定Key值所对应的value值
  # 获取index的值,如果没有,则设置使用默认值1
  num = request.GET.get('index','1')
  # 获取第几页
  number = paginator.page(num)
 except PageNotAnInteger:
  # 如果输入的页码数不是整数,那么显示第一页数据
  number = paginator.page(1)
 except EmptyPage:
  number = paginator.page(paginator.num_pages)

 # 将当前页页码,以及当前页数据传递到index.html
 return render(request,'index.html',{'page':number,'paginator':paginator})

下面我们在index.html做界面处理,这里是需要用到bootstraps,三个文件如下图所示,前面讲解过。

Django实现网页分页功能

来到index.html文件,做如下设置:

{% load static %}
<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <link rel="stylesheet" href="{% static 'css/bootstrap.css' %}" >
 <!--<link rel="stylesheet" href="">-->
 <title>淘宝</title>
</head>
<body>
 {% for good in page.object_list %}
  <h4>{{good.name}} - {{good.des}}</h4>
 {% endfor %}
 <ul class="pagination">
  {# 如果当前页还有上一页 #}
  {% if page.has_previous %}
   <li>
    {# 点击a标签,跳转到上一页链接 ?index 为地址后面拼接的参数 #}
    <a href="?index={{page.previous_page_number}}" >上一页</a>
   </li>
  {% else %}
   {# 如果没有上一页, 则上一页按钮不可点击 #}
   <li class="disabled">
    <a href="#">上一页</a>
   </li>
  {% endif %}

  {% for page_number in paginator.page_range %}
   {# 获取当前页的页码 #}
   {% if page_number == page.number %}
    {# 如果是当前页的话,选中 #}
    <li class="active">
     <a href="?index={{page_number}}">{{page_number}}</a>
    </li>
   {% else %}
    <li>
     <a href="?index={{page_number}}">{{page_number}}</a>
    </li>
   {% endif %}
  {% endfor %}

  {% if page.has_next %}
   <li>
    <a href="?index={{page.next_page_number}}">下一页</a>
   </li>
  {% else %}
  <li class="disabled">
   <a href="#" >下一页</a>
  </li>
  {% endif %}
 </ul>

 <script src="{% static 'js/jquery.js' %}"></script>
 <script src="{% static 'js/bootstrap.js' %}"></script>
</body>
</html>

显示效果如下:

Django实现网页分页功能

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python中的文件操作
Aug 28 Python
python 查找文件名包含指定字符串的方法
Jun 05 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
Aug 01 Python
python3学生名片管理v2.0版
Nov 29 Python
如何在Django项目中引入静态文件
Jul 26 Python
Django实现whoosh搜索引擎使用jieba分词
Apr 08 Python
Python中socket网络通信是干嘛的
May 27 Python
Python局部变量与全局变量区别原理解析
Jul 14 Python
基于Python模拟浏览器发送http请求
Nov 06 Python
python 定义函数 返回值只取其中一个的实现
May 21 Python
python如何利用cv2模块读取显示保存图片
Jun 04 Python
Python面试不修改数组找出重复的数字
May 20 Python
8段用于数据清洗Python代码(小结)
Oct 31 #Python
利用Python绘制有趣的万圣节南瓜怪效果
Oct 31 #Python
python实现大量图片重命名
Mar 23 #Python
python3图片文件批量重命名处理
Oct 31 #Python
Django1.11自带分页器paginator的使用方法
Oct 31 #Python
python实现批量文件重命名
Oct 31 #Python
Python使用matplotlib 画矩形的三种方式分析
Oct 31 #Python
You might like
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
解析PHP工厂模式的好处
2013/06/18 PHP
yii上传文件或图片实例
2014/04/01 PHP
基于JQuery的日期联动实现代码
2011/02/24 Javascript
基于jquery的图片轮播 tab切换组件
2012/07/19 Javascript
IE不支持getElementsByClassName最终完美解决方案
2012/12/17 Javascript
js使用ajax读博客rss示例
2014/05/06 Javascript
影响jQuery使用的14个方面
2014/09/01 Javascript
Jquery幻灯片特效代码分享--打开页面随机选择切换方式(3)
2015/08/15 Javascript
js数组去重的5种算法实现
2015/11/04 Javascript
学习JavaScript设计模式之装饰者模式
2016/01/19 Javascript
深入理解js中this的用法
2016/05/28 Javascript
JS随机打乱数组的方法小结
2016/06/22 Javascript
vue的diff算法知识点总结
2018/03/29 Javascript
微信小程序使用for循环动态渲染页面操作示例
2018/12/25 Javascript
js+html实现点名系统功能
2019/11/05 Javascript
原生javascript运动函数的封装示例【匀速、抛物线、多属性的运动等】
2020/02/23 Javascript
JavaScript监听一个DOM元素大小变化
2020/04/26 Javascript
Python进程通信之匿名管道实例讲解
2015/04/11 Python
Python中__new__与__init__方法的区别详解
2015/05/04 Python
Python外星人入侵游戏编程完整版
2020/03/30 Python
遗传算法之Python实现代码
2017/10/10 Python
对python中的logger模块全面讲解
2018/04/28 Python
Python 的AES加密与解密实现
2019/07/09 Python
win10下python2和python3共存问题解决方法
2019/12/23 Python
Python生成器next方法和send方法区别详解
2020/05/30 Python
服务员岗位职责
2014/01/29 职场文书
优秀毕业生求职信
2014/06/05 职场文书
计算机网络及管理学专业求职信
2014/06/05 职场文书
调研座谈会发言材料
2014/08/23 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书
社会心理学学习心得体会
2016/01/22 职场文书
员工保密协议范本,您一定得收藏!很有用!
2019/08/08 职场文书
Python实现拼音转换
2021/06/07 Python
pycharm无法安装cv2模块问题
2022/05/20 Python