DRF分页
一、序列化
from rest_framework impost serializers
from . models import * class GoodsSerializer(serializers,ModelSerializer):
"""商品序列化"""
class Meta:
model=Goods
fields="__all__"
serializers.py
二、分页代码
from rest_framework.views import APIView
from rest_framework.response import Response
from django.core.paginator import Paginator
from .serializer import GoodsSerializer
from django.core.paginator import Paginator, EmptyPage, InvalidPage class GoodsPageApi(APIView):
"""
分页
"""
def get(self, request, pindex):
# 1、获取商品信息
goods_list = Goods.objects.all()
# 2、实例化分页器
paginat = Paginator(goods_list, 2)
# 3、 获取分页
paged = paginat.page(pindex)
try: # 判断是否有下一页
paged.has_next()
down_page = paged.next_page_number() # 获取一下页的页码
except EmptyPage: # 如果下一页为空的话,
down_page = paged.paginator.num_pages # 获取最后一页的页码
paged = paginat.page(down_page) try:
paged.has_previous() # 判断是否有上一页
up_page = paged.previous_page_number() # 获取上页的页码
except InvalidPage: # 如果没有上一页
up_page = 1 # 返回第一页
paged = paginat.page(up_page) # 4、 做序列化
page_serializer = GoodsSerializer(paged, many=True) # 5、 返回数据
return Response({
'code': 200,
'data': page_serializer.data,
'page_list': [i for i in paginat.page_range],
'has_previous': paged.has_previous(), # 判断是否有上一页
'has_next': paged.has_next(), # 判断是否有下一页
'previous_page_number': up_page, # 返回上一页的页码
'next_page_number': down_page, # 返回下一页的页码
'page_number': paged.number # 返回当前页页码
})
views.py
三、urls.py
path('goods_page/<pindex>', views.GoodsPageApi.as_view()), # 商品分页
四、vue分页展示
<template>
<div>
<table>
<tr>
<td>商品编码</td>
<td>商品名称</td>
<td>商品图片</td>
<td>商品详情</td>
<td>商品价格</td>
</tr>
<tr v-for="goods in goods_list">
<td>{{goods.id}}</td>
<td>{{goods.goods_name}}</td>
<td><img :src="'http://127.0.0.1:8000' + goods.goods_img" alt="" style="width:100px; heigth:100px"></td>
<td>{{goods.goods_content}}</td>
<td>{{goods.goods_price}}</td>
</tr>
</table>
<div>
<button v-for="page in page_list" @click="get_num($event)" :value="page">{{page}}</button>
</div>
</div>
</template> <script>
import axios from 'axios'
export default {
data(){
return{
goods_list: [],
page_list: [],
p: ''
}
},
methods:{
get_goods(){
var self = this
axios({
method: 'get',
url: 'http://127.0.0.1:8000/myapp/goods_page/'+ this.p
}).then(function(res){
console.log(res.data)
self.goods_list = res.data.data
self.page_list = res.data.page_list
})
},
get_num(event){
this.p = event.target.value // 通过事件获取button的value
console.log(this.p)
this.get_goods() // 点击按钮的时候,重新调用get_goods方法
}
},
created(){ // 页面加载的时候,自动执行下面方法
this.get_goods()
}
}
</script>
DRF分页的更多相关文章
- python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)
昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...
- drf 分页,获取fk,choise,m2m等字段数据(序列化)
1.什么是restful规范 是一套规则,用于程序之间进行数据交换的约定. 他规定了一些协议,对我们感受最直接的的是,以前写增删改查需要写4个接口,restful规范的就是1个接口,根据method的 ...
- Django DRF 分页
Django DRF 分页 分页在DRF当中可以一共有三种,可以通过setttings设置,也可也通过自定义设置 PageNumberPagination 使用URL http://127.0.0.1 ...
- DRF 分页组件
Django Rest Framework 分页组件 DRF的分页 为什么要使用分页 其实这个不说大家都知道,大家写项目的时候也是一定会用的, 我们数据库有几千万条数据,这些数据需要展示,我们不可能直 ...
- DRF分页组件
为什么要使用分页 其实这个不说大家都知道,大家写项目的时候也是一定会用的, 我们数据库有几千万条数据,这些数据需要展示,我们不可能直接从数据库把数据全部读取出来, 这样会给内存造成特别大的压力,有可能 ...
- 【DRF分页】
目录 第一种 PageNumberPagination 查第n页,每页显示n条数据 第二种 LimitOffsetPagination 在第n个位置,向后查n条数据 第三种 CursorPaginat ...
- drf分页组件补充
drf偏移分页组件 pahenations.py from rest_framework.pagination import LimitOffsetPagination class MyLimitOf ...
- drf分页功能
什么是restful规范 是一套规则,用于程序之间进行数据交换的约定. 他规定了一些协议,对我们感受最直接的的是,以前写增删改查需要写4个接口,restful规范的就是1 个接口,根据method的不 ...
- drf 分页
分页: 1.简单的分页: 每页显示条数: page_size = api_settings.PAGE_SIZE 查询的页码数: page_query_param = "page" ...
随机推荐
- JNA 使用总结
JNA 是基于 JNI(Java Native Interface) 技术的开源工具,能够实现单方向的 Java 调用本地方法(通常是 C/C++ 编写的动态链接库中的函数),在 Windows 中是 ...
- 扩展BSGS求解离散对数问题
扩展BSGS用于求解axΞb mod(n) 同余方程中gcd(a,n)≠1的情况 基本思路,将原方程转化为a与n互质的情况后再套用普通的BSGS求解即可 const int maxint=((1< ...
- linux-mysql-主从同步
什么是二进制日志binlog:记录着mysql数据库中的一些写入性操作,比如一些增删改,但不包括查询!二进制日志有哪些功能:数据复制和数据恢复的功能 查看网络状态:netstat -natp查看mas ...
- Python实现人工神经网络逼近股票价格
1.基本数据绘制成图 数据有15天股票的开盘价格和收盘价格,可以通过比较当天开盘价格和收盘价格的大小来判断当天股票价格的涨跌情况,红色表示涨,绿色表示跌,测试代码如下: # encoding:utf- ...
- leetcode top-100-liked-questions刷题总结
一.起因 宅在家中,不知该做点什么.没有很好的想法,自己一直想提升技能,语言基础自不必言,数据结构还算熟悉,算法能力一般.于是乎,就去刷一通题. 刷题平台有很多,我选择了在leetcode进行刷题.回 ...
- Mysql部分存储引擎介绍
Mysql存储引擎 什么是存储引擎 mysql中建立的库 --> 文件夹 库中建立的表 --> 文件 现实生活中我们用来存储数据的文件有不同的类型,每种文件类型对应各自不同的处理机制: ...
- MySQL启动和停止
MySQL视为大仓库,关闭的时候有权限有身份都无法进入使用的时候要保持启用状态 方式一: 计算机游击找到“管理”打开 左侧栏目中找到“服务和应用程序”打开 打开服务 找到MySQL...,右击.... ...
- 微信小程序块导航
1.wxml页面 <!--index.wxml--> <swiper current="{{currentTab}}" class="swiper-bo ...
- AM335X的SD卡更新系统学习记录
一般利用一张SD卡就能进行系统的更新,以前一直不知是什么原理,最近了解了下,对了解到的内容做个记录.使用的是AM335X平台,系统是Linux,文件系统是EXT3: 1.首先需要一张分好分区的SD卡( ...
- 根下var目录迁移
问题 var目录挂载在根目录下,占用/分区的空间,如果/var/log日志空间过大,将导致/分区空间满,导致系统无法使用. 解决方案 在硬盘上划分单独的分区,挂载到/var目录,并迁移/var目录下的 ...