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 Socket编程入门教程
Jul 11 Python
python使用any判断一个对象是否为空的方法
Nov 19 Python
python引用DLL文件的方法
May 11 Python
Python3实现将文件树中所有文件和子目录归档到tar压缩文件的方法
May 22 Python
Python实现简单字典树的方法
Apr 29 Python
python+opencv+caffe+摄像头做目标检测的实例代码
Aug 03 Python
Django跨域请求CSRF的方法示例
Nov 11 Python
对pandas写入读取h5文件的方法详解
Dec 28 Python
python pytest进阶之conftest.py详解
Jun 27 Python
基于python的docx模块处理word和WPS的docx格式文件方式
Feb 13 Python
Python函数生成器原理及使用详解
Mar 12 Python
Python yield生成器和return对比代码实例
Apr 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 intval的测试代码发现问题
2008/07/27 PHP
PHP中文件读、写、删的操作(PHP中对文件和目录操作)
2012/03/06 PHP
thinkPHP中分页用法实例分析
2015/12/26 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
PHP利用pdo_odbc实现连接数据库示例【基于ThinkPHP5.1搭建的项目】
2019/05/13 PHP
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
extjs render 用法介绍
2013/09/11 Javascript
js中取得变量绝对值的方法
2015/01/03 Javascript
javascript实现youku的视频代码自适应宽度
2015/05/25 Javascript
jQuery+jsp下拉框联动获取本地数据的方法(附源码)
2015/12/03 Javascript
javascript中Date对象的使用总结
2016/11/21 Javascript
jQuery仿写百度百科的目录树
2017/01/03 Javascript
AngularJS实现controller控制器间共享数据的方法示例
2017/10/30 Javascript
对vue中v-if的常见使用方法详解
2018/09/28 Javascript
如何用原生js写一个弹窗消息提醒插件
2019/05/24 Javascript
js tab栏切换代码实例解析
2019/09/03 Javascript
JS造成内存泄漏的几种情况实例分析
2020/03/02 Javascript
解决vue下载后台传过来的乱码流的问题
2020/12/05 Vue.js
Javascript 模拟mvc实现点餐程序案例详解
2020/12/24 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
python绘制简单折线图代码示例
2017/12/19 Python
Python List cmp()知识点总结
2019/02/18 Python
python运用sklearn实现KNN分类算法
2019/10/16 Python
python垃圾回收机制(GC)原理解析
2019/12/30 Python
Keras使用tensorboard显示训练过程的实例
2020/02/15 Python
python语言的优势是什么
2020/06/17 Python
24个canvas基础知识小结
2014/12/17 HTML / CSS
HTML5 body设置自适应全屏
2020/05/07 HTML / CSS
荷兰照明、灯具和配件网上商店:dmlights
2019/08/25 全球购物
领导干部遵守党的政治纪律情况思想汇报
2014/09/14 职场文书
幼儿园小班见习报告
2014/10/31 职场文书
2015重阳节座谈会主持词
2015/07/30 职场文书
python自动统计zabbix系统监控覆盖率的示例代码
2021/04/03 Python
详解thinkphp的Auth类认证
2021/05/28 PHP
Redis Cluster 集群搭建你会吗
2021/08/04 Redis
openGauss数据库JDBC环境连接配置的详细过程(Eclipse)
2022/06/01 Java/Android