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 功能和特点(新手必学)
Dec 30 Python
python使用super()出现错误解决办法
Aug 14 Python
Python利用itchat对微信中好友数据实现简单分析的方法
Nov 21 Python
Python3用tkinter和PIL实现看图工具
Jun 21 Python
pytorch多进程加速及代码优化方法
Aug 19 Python
python中sort和sorted排序的实例方法
Aug 26 Python
pygame实现非图片按钮效果
Oct 29 Python
Python enumerate内置库用法解析
Feb 24 Python
keras-siamese用自己的数据集实现详解
Jun 10 Python
Selenium python时间控件输入问题解决方案
Jul 22 Python
详解python对象之间的交互
Sep 29 Python
python画条形图的具体代码
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验证码函数
2016/05/19 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
FormValid0.5版本发布,带ajax自定义验证例子
2007/08/17 Javascript
使用apply方法实现javascript中的对象继承
2013/12/16 Javascript
ExtJS判断IE浏览器类型的方法
2014/02/10 Javascript
jquery设置按钮停顿3秒不可用
2014/03/07 Javascript
JavaScript实现的in_array函数
2014/08/27 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
js实现div拖动动画运行轨迹效果代码分享
2015/08/27 Javascript
canvas实现动态小球重叠效果
2017/02/06 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
JS实现颜色动态淡化效果
2017/03/06 Javascript
JS简单验证上传文件类型的方法
2017/04/17 Javascript
基于JS脚本语言的基础语法详解
2017/07/22 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
Angular 封装并发布组件的方法示例
2018/04/19 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
2018/04/20 Javascript
jQuery发请求传输中文参数乱码问题的解决方案
2018/05/22 jQuery
js数据类型检测总结
2018/08/05 Javascript
Django中模型Model添加JSON类型字段的方法
2015/06/17 Python
numpy中矩阵合并的实例
2018/06/15 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
Python列表与元组的异同详解
2019/07/02 Python
Python+Opencv身份证号码区域提取及识别实现
2020/08/25 Python
css3隔行变换色实现示例
2014/02/19 HTML / CSS
css3实现可拖动的魔方3d效果
2019/05/07 HTML / CSS
存储过程和函数的区别
2013/05/28 面试题
是否可以从一个static方法内部发出对非static方法的调用?
2014/08/18 面试题
给民警的表扬信
2014/01/08 职场文书
报关专员求职信范文
2014/02/22 职场文书
书香家庭事迹材料
2014/05/09 职场文书
学雷锋日活动总结
2015/02/06 职场文书
成品仓管员岗位职责
2015/04/01 职场文书
终止劳动合同通知书
2015/04/16 职场文书
python 实现的截屏工具
2021/05/08 Python
JavaScript实现栈结构详细过程
2021/12/06 Javascript