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之hello world
May 21 Python
python利用不到一百行代码实现一个小siri
Mar 02 Python
python中defaultdict的用法详解
Jun 07 Python
numpy 返回函数的上三角矩阵实例
Nov 25 Python
python 经典数字滤波实例
Dec 16 Python
Python基于pygame实现单机版五子棋对战
Dec 26 Python
Python基于pip实现离线打包过程详解
May 15 Python
浅谈Pycharm的项目文件名是红色的原因及解决方式
Jun 01 Python
Python unittest discover批量执行代码实例
Sep 08 Python
python利用google翻译方法实例(翻译字幕文件)
Sep 21 Python
python中xlutils库用法浅析
Dec 29 Python
python playwrigh框架入门安装使用
Jul 23 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中AES加密解密的例子小结
2014/02/18 PHP
PHP实现CSV文件的导入和导出类
2015/03/24 PHP
PHP读取zip文件的方法示例
2016/11/17 PHP
Prototype使用指南之base.js
2007/01/10 Javascript
JavaScript 继承详解(一)
2009/07/13 Javascript
一个简单的js渐显(fadeIn)渐隐(fadeOut)类
2010/06/19 Javascript
jQuery中调用WebService方法小结
2011/03/28 Javascript
js Html结构转字符串形式显示代码
2011/11/15 Javascript
Javascript中For In语句用法实例
2015/05/14 Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
2015/08/05 Javascript
Js制作点击输入框时默认文字消失的效果
2015/09/05 Javascript
基于jQuery实现仿51job城市选择功能实例代码
2016/03/02 Javascript
JavaScript页面实时显示当前时间实例代码
2016/10/23 Javascript
js无提示关闭浏览器窗口的两种方法分析
2016/11/06 Javascript
深入理解vue中的$set
2017/06/01 Javascript
vue2.X组件学习心得(新手必看篇)
2017/07/05 Javascript
node.js学习之断言assert的使用示例
2017/09/28 Javascript
JS兼容所有浏览器的DOMContentLoaded事件
2018/01/12 Javascript
Element-ui table中过滤条件变更表格内容的方法
2018/03/02 Javascript
Vue 指令实现按钮级别权限管理功能
2019/04/23 Javascript
一个基于flask的web应用诞生 flask和mysql相连(4)
2017/04/11 Python
利用python求解物理学中的双弹簧质能系统详解
2017/09/29 Python
django输出html内容的实例
2018/05/27 Python
基于windows下pip安装python模块时报错总结
2018/06/12 Python
Python 仅获取响应头, 不获取实体的实例
2019/08/21 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
Python装饰器如何实现修复过程解析
2020/09/05 Python
CSS3绘制圆角矩形的简单示例
2015/09/28 HTML / CSS
Melijoe英国官网:法国儿童时尚网站
2016/11/18 全球购物
享誉全球的多元化时尚精品购物平台:Farfetch发发奇(支持中文)
2017/08/08 全球购物
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
网络技术支持面试题
2013/04/22 面试题
学校爱心捐款倡议书
2014/05/13 职场文书
四查四看整改措施
2014/09/19 职场文书
西双版纳导游词
2015/02/03 职场文书