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安装第三方库的3种方法
Jun 21 Python
Linux下通过python访问MySQL、Oracle、SQL Server数据库的方法
Apr 23 Python
利用python获取某年中每个月的第一天和最后一天
Dec 15 Python
Linux RedHat下安装Python2.7开发环境
May 20 Python
Python简单实现socket信息发送与监听功能示例
Jan 03 Python
python调用并链接MATLAB脚本详解
Jul 05 Python
python批量图片处理简单示例
Aug 06 Python
django echarts饼图数据动态加载的实例
Aug 12 Python
pyqt5 QlistView列表显示的实现示例
Mar 24 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
Jun 24 Python
基于python爬取链家二手房信息代码示例
Oct 21 Python
python3 os进行嵌套操作的实例讲解
Nov 19 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数组中的重复值的实现代码
2011/07/17 PHP
PHP生成图片验证码、点击切换实例
2014/06/25 PHP
php自定义类fsocket模拟post或get请求的方法
2015/07/31 PHP
php生成带logo二维码方法小结
2016/04/08 PHP
Discuz论坛密码与密保加密规则
2016/12/19 PHP
PHP 信号管理知识整理汇总
2017/02/19 PHP
php实现微信企业号支付个人的方法详解
2017/07/26 PHP
Laravel框架实现修改登录和注册接口数据返回格式的方法
2018/08/17 PHP
php5.6.x到php7.0.x特性小结
2019/08/17 PHP
模拟用户操作Input元素,不会触发相应事件
2007/05/11 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
JavaScript ParseFloat()方法
2015/12/18 Javascript
基于gulp合并压缩Seajs模块的方式说明
2016/06/14 Javascript
Node.js服务器开启Gzip压缩教程
2017/08/11 Javascript
解决微信二次分享不显示摘要和图片的问题
2017/08/18 Javascript
VUE饿了么树形控件添加增删改功能的示例代码
2017/10/17 Javascript
vuejs项目打包之后的首屏加载优化及打包之后出现的问题
2018/04/01 Javascript
详解如何在vue项目中使用lodop打印插件
2018/09/27 Javascript
Vue实现商品详情页的评价列表功能
2019/09/04 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
2020/07/21 Javascript
js轮播图之旋转木马效果
2020/10/13 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
[01:14:12]2018DOTA2亚洲邀请赛4.7 总决赛 LGD vs Mineski 第二场
2018/04/09 DOTA
浅析Python中return和finally共同挖的坑
2017/08/18 Python
使用Python的SymPy库解决数学运算问题的方法
2019/03/27 Python
对tensorflow中cifar-10文档的Read操作详解
2020/02/10 Python
Python读取分割压缩TXT文本文件实例
2020/02/14 Python
使用wxpy实现自动发送微信消息功能
2020/02/28 Python
GC是什么?为什么要有GC?
2013/12/08 面试题
大学生素质拓展活动方案
2014/02/11 职场文书
大学同学十年聚会感言
2014/02/21 职场文书
工程项目建议书范文
2014/03/12 职场文书
2015年创先争优活动总结
2015/03/27 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
记者节感言
2015/08/03 职场文书
利用python实时刷新基金估值(摸鱼小工具)
2021/09/15 Python