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" ...
随机推荐
- PHP Files functions
simple functions <?php $docRoot = $_SERVER['DOCUMENT_ROOT']; //readfile($docRoot."/orders/or ...
- ipa文件信息检查工具
项目地址:https://github.com/ryjwinner/softwares/raw/master/iOS-checkIPA.jar 项目简介: 针对近期大量iOS app需要签名,但多家签 ...
- 【Unity|C#】基础篇(2)——栈与堆、值类型与引用类型
传送门:https://www.cnblogs.com/moonache/p/6008048.html [笔记] 图1:值类型与引用类型 存储方式 > 值类型:数据直接存在栈中 > 引用类 ...
- laravel框架使用阿里短信接入
EG: accessKeyid和accessKeySecret还有模板ID.签名名称这几项必要参数自己去阿里云获取一.下载SDK和demo 下载并解压后 在laravel框架的app目录下创建libs ...
- Loj515 「LibreOJ β Round #2」贪心只能过样例 - Bitset,Dp
bitset的基本应用了 类似可行性背包的dp考虑 复杂度O(nmL/64) #include <bits/stdc++.h> using namespace std; bitset &l ...
- 关于Oracle内存分配-解决实际运行时最大Session数不一致远小于系统配置最大的Session数目
一.相关的技术准备 1. 关于内存的介绍:https://blog.csdn.net/u013641333/article/details/82732526 2. PGA_AGGREGATE_TARG ...
- ReviewBoard使用:添加SVN
1.登录ReviewBoard,选择“Admin” 2.选择 “Repositores”,点击按钮“Add” 3.填写内容,然后点击按钮“SAVE”保存 Name:仓库名称(自己随意写) Hostin ...
- HTML /和./的区别 - Web开发
"/"访问根目录 例1 https://www.cnblogs.com/test 里有 <a href="/Edsuns"></a> 则 ...
- Qt程序异常结束,The process was ended forcefully....
我用的Qt版本是5.9.6,运行了好几次程序都妥妥当当的,然后就被安排上了...出现如下错误: 也是刚入手Qt不久,出现这样的错误我以为是代码的问题,然后撤销一些代码发现还是这样的错,索性就关闭Qt然 ...
- fastadmin 框架中图片点击放大
fastadmin的原生图片预览,重新打开一个窗口太麻烦,使用layui做一个弹窗式的图片预览 1.将下面代码放在backend-init.js文件中 $('body').on('click', '[ ...