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常用正则表达式符号浅析
Aug 13 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 Python
在Python中处理字符串之ljust()方法的使用简介
May 19 Python
Python基于聚类算法实现密度聚类(DBSCAN)计算【测试可用】
Dec 26 Python
Python在cmd上打印彩色文字实现过程详解
Aug 07 Python
python线程安全及多进程多线程实现方法详解
Sep 27 Python
在pycharm中为项目导入anacodna环境的操作方法
Feb 12 Python
利用python对excel中一列的时间数据更改格式操作
Jul 14 Python
关于Python3的import问题(pycharm可以运行命令行import错误)
Nov 18 Python
Pycharm-community-2020.2.3 社区版安装教程图文详解
Dec 08 Python
Python基于Tkinter开发一个爬取B站直播弹幕的工具
May 06 Python
高考要来啦!用Python爬取历年高考数据并分析
Jun 03 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适配器模式介绍
2012/08/14 PHP
php读取csv实现csv文件下载功能
2013/12/18 PHP
PHP解析RSS的方法
2015/03/05 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
javascript学习笔记(十七) 检测浏览器插件代码
2012/06/20 Javascript
js事件冒泡实例分享(已测试)
2013/04/23 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
JS获取当前网页大小以及屏幕分辨率等
2014/09/05 Javascript
AngularJS封装$http.post()实例详解
2017/05/06 Javascript
前端跨域的几种解决方式总结(推荐)
2017/08/16 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
2018/03/28 jQuery
layui table 参数设置方法
2018/08/14 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
使用JavaScript保存文本文件到本地的两种方法
2019/01/22 Javascript
JavaScript中十种一步拷贝数组的方法实例详解
2019/04/22 Javascript
python使用selenium登录QQ邮箱(附带滑动解锁)
2019/01/23 Python
pandas基于时间序列的固定时间间隔求均值的方法
2019/07/04 Python
Pandas 重塑(stack)和轴向旋转(pivot)的实现
2019/07/22 Python
Python 中如何实现参数化测试的方法示例
2019/12/10 Python
python 操作hive pyhs2方式
2019/12/21 Python
Python中zip()函数的解释和可视化(实例详解)
2020/02/16 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
python分布式爬虫中消息队列知识点详解
2020/11/26 Python
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
Joules美国官网:出色的英国风格
2017/10/30 全球购物
即兴演讲稿
2014/01/04 职场文书
中学优秀班主任事迹材料
2014/05/01 职场文书
高等教育学专业自荐书
2014/06/17 职场文书
5s标语大全
2014/06/23 职场文书
党员四风问题对照检查材料
2014/09/27 职场文书
2014年作风建设剖析材料
2014/10/23 职场文书
机器人瓦力观后感
2015/06/12 职场文书
《鲁滨逊漂流记》之六读后感(4篇)
2019/09/29 职场文书
MySQL数据迁移相关总结
2021/04/29 MySQL
Angular性能优化之第三方组件和懒加载技术
2021/05/10 Javascript