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 greenlet实现原理和使用示例
Sep 24 Python
以windows service方式运行Python程序的方法
Jun 03 Python
Python实现二叉堆
Feb 03 Python
详解python的ORM中Pony用法
Feb 09 Python
教你使用python画一朵花送女朋友
Mar 29 Python
Python操作Oracle数据库的简单方法和封装类实例
May 07 Python
uwsgi+nginx部署Django项目操作示例
Dec 04 Python
python Pexpect 实现输密码 scp 拷贝的方法
Jan 03 Python
python 同时运行多个程序的实例
Jan 07 Python
Python Pandas对缺失值的处理方法
Sep 27 Python
Python any()函数的使用方法
Oct 28 Python
OpenCV3.3+Python3.6实现图片高斯模糊
May 18 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获取和操作配置文件php.ini的几个函数介绍
2013/06/24 PHP
PHP定时任务延缓执行的实现
2014/10/08 PHP
功能强大的php文件上传类
2016/08/29 PHP
php实现的顺序线性表示例
2019/05/04 PHP
在Laravel中实现使用AJAX动态刷新部分页面
2019/10/15 PHP
PhpStorm2020.1 安装 debug - Postman 调用的详细教程
2020/08/17 PHP
Jquery事件的连接使用示例
2013/06/18 Javascript
javascript中自定义对象的属性方法分享
2013/07/12 Javascript
js实现横向伸展开的二级导航菜单代码
2015/08/28 Javascript
基于jquery实现日历签到功能
2020/09/11 Javascript
Vue2.0实现1.0的搜索过滤器功能实例代码
2017/03/20 Javascript
基于bootstrap写的一点localStorage本地储存
2017/11/21 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
2018/10/19 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
Vue组件化开发之通用型弹出框的实现
2020/02/28 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
Python实现Singleton模式的方式详解
2019/08/08 Python
Python测试模块doctest使用解析
2019/08/10 Python
Python 迭代,for...in遍历,迭代原理与应用示例
2019/10/12 Python
python验证码图片处理(二值化)
2019/11/01 Python
python二元表达式用法
2019/12/04 Python
tensorflow实现打印ckpt模型保存下的变量名称及变量值
2020/01/04 Python
解决pyqt5异常退出无提示信息的问题
2020/04/08 Python
使用Jupyter notebooks上传文件夹或大量数据到服务器
2020/04/14 Python
在pycharm中使用pipenv创建虚拟环境和安装django的详细教程
2020/11/30 Python
尼克松手表官网:Nixon手表
2019/03/17 全球购物
高中生自我评价个人范文
2013/11/09 职场文书
业务助理岗位职责
2013/11/18 职场文书
《夸父追日》教学反思
2014/02/26 职场文书
民族团结先进集体事迹材料
2014/05/22 职场文书
无房产证房屋转让协议书合同样本
2014/10/18 职场文书
2014年社区妇联工作总结
2014/12/02 职场文书
员工开除通知书
2015/04/25 职场文书
立春观后感
2015/06/18 职场文书
运动会加油稿50字
2015/07/21 职场文书
小学生安全教育主题班会
2015/08/12 职场文书