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求斐波那契数列示例分享
Feb 14 Python
使用Python的Flask框架实现视频的流媒体传输
Mar 31 Python
十个Python程序员易犯的错误
Dec 15 Python
python 数据清洗之数据合并、转换、过滤、排序
Feb 12 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
Sep 03 Python
在pytorch中查看可训练参数的例子
Aug 18 Python
Python.append()与Python.expand()用法详解
Dec 18 Python
python GUI库图形界面开发之PyQt5信号与槽多窗口数据传递详细使用方法与实例
Mar 08 Python
python如何删除列为空的行
Jul 17 Python
Pycharm Plugins加载失败问题解决方案
Nov 28 Python
Python Process创建进程的2种方法详解
Jan 25 Python
Python入门之使用pandas分析excel数据
May 12 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数字字符串左侧补0、字符串填充和自动补齐的几种方法
2014/05/10 PHP
使用PHP函数scandir排除特定目录
2014/06/12 PHP
Laravel 5框架学习之Laravel入门和新建项目
2015/04/07 PHP
分享ThinkPHP3.2中关联查询解决思路
2015/09/20 PHP
PHP实现在windows下配置sendmail并通过mail()函数发送邮件的方法
2017/06/20 PHP
PHP中十六进制颜色与RGB颜色值互转的方法
2019/03/18 PHP
PHP操作XML中XPath的应用示例
2019/07/04 PHP
使用jquery实现仿百度自动补全特效
2015/07/23 Javascript
JavaScript类型系统之正则表达式
2016/01/05 Javascript
JavaScript中数组的22种方法必学(推荐)
2016/07/20 Javascript
canvas 绘制圆形时钟
2017/02/22 Javascript
通过vue-cli来学习修改Webpack多环境配置和发布问题
2017/12/22 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
Vue动态生成el-checkbox点击无法赋值的解决方法
2019/02/21 Javascript
用原生 JS 实现 innerHTML 功能实例详解
2019/04/03 Javascript
JS实现的字符串数组去重功能小结
2019/06/17 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
零基础写python爬虫之使用urllib2组件抓取网页内容
2014/11/04 Python
Python 数据处理库 pandas 入门教程基本操作
2018/04/19 Python
彻彻底底地理解Python中的编码问题
2018/10/15 Python
Python列表list排列组合操作示例
2018/12/18 Python
Python操作qml对象过程详解
2019/09/26 Python
Numpy中np.max的用法及np.maximum区别
2020/11/27 Python
在HTML5中如何使用CSS建立不可选的文字
2014/10/17 HTML / CSS
阿里巴巴国际站:Alibaba.com
2016/07/21 全球购物
阿玛尼化妆品美国官网:Giorgio Armani Beauty
2017/02/02 全球购物
美国手机支架公司:PopSockets
2019/11/27 全球购物
Sony C++笔试题
2013/03/10 面试题
自荐信怎么写好
2013/11/11 职场文书
服装机修工岗位职责
2013/12/26 职场文书
安踏广告词改编版
2014/03/21 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
六五普法先进个人主要事迹材料
2015/11/03 职场文书
php双向队列实例讲解
2021/11/17 PHP
教你部署vue项目到docker
2022/04/05 Vue.js
pandas中pd.groupby()的用法详解
2022/06/16 Python