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 相关文章推荐
python3.0 字典key排序
Dec 24 Python
python中常用的各种数据库操作模块和连接实例
May 29 Python
Python中pygame安装方法图文详解
Nov 11 Python
浅谈Python 集合(set)类型的操作——并交差
Jun 30 Python
Python使用ntplib库同步校准当地时间的方法
Jul 02 Python
python生成二维码的实例详解
Oct 29 Python
Python语言生成水仙花数代码示例
Dec 18 Python
python 自动去除空行的实例
Jul 24 Python
python实现决策树分类
Aug 30 Python
Python任意字符串转16, 32, 64进制的方法
Jun 12 Python
Python 中@property的用法详解
Jan 15 Python
如何在pycharm中安装第三方包
Oct 27 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中动态显示签名和ip原理
2007/03/28 PHP
php防止伪造数据从地址栏URL提交的方法
2014/08/24 PHP
PHP中使用CURL获取页面title例子
2015/01/07 PHP
php实现每天自动变换随机问候语的方法
2015/05/12 PHP
windows下apache搭建php开发环境
2015/08/27 PHP
PHP基于redis计数器类定义与用法示例
2018/02/08 PHP
php实现微信支付之退款功能
2018/05/30 PHP
php中文语义分析实现方法示例
2019/09/28 PHP
php实现微信小程序授权登录功能(实现流程)
2019/11/13 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
Jquery实现无刷新DropDownList联动实现代码
2010/03/08 Javascript
NodeJS学习笔记之网络编程
2014/08/03 NodeJs
jQuery动态修改超链接地址的方法
2015/02/13 Javascript
JavaScript通过function定义对象并给对象添加toString()方法实例分析
2015/03/23 Javascript
纯javascript实现四方向文本无缝滚动效果
2015/06/16 Javascript
同步文本框内容JS代码实现
2016/08/04 Javascript
微信公众号 客服接口的开发实例详解
2016/09/28 Javascript
react native带索引的城市列表组件的实例代码
2017/08/08 Javascript
基于D3.js实现时钟效果
2018/07/17 Javascript
vue axios数据请求get、post方法及实例详解
2018/09/11 Javascript
微信小程序搜索框样式并实现跳转到搜索页面(小程序搜索功能)
2020/03/10 Javascript
VSCode 添加自定义注释的方法(附带红色警戒经典注释风格)
2020/08/27 Javascript
python列表操作之extend和append的区别实例分析
2015/07/28 Python
使用python将时间转换为指定的格式方法
2018/11/12 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
python的pytest框架之命令行参数详解(上)
2019/06/27 Python
Python中Unittest框架的具体使用
2019/08/27 Python
python实现飞行棋游戏
2020/02/05 Python
Python解释器及PyCharm工具安装过程
2020/02/26 Python
python 自定义异常和主动抛出异常(raise)的操作
2020/12/11 Python
联想德国官网:Lenovo Germany
2018/07/04 全球购物
我们的节日中秋活动方案
2014/08/19 职场文书
2014年社区党建工作汇报材料
2014/11/02 职场文书
网络营销计划书
2015/01/17 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL