首页 > 其他分享 >Django - rest_framework pagination 分页功能

Django - rest_framework pagination 分页功能

时间:2023-09-26 19:00:29浏览次数:43  
标签:pagination obj name get rest next link Django page

 下载

pip install djangorestframework

 

models.py

class News(models.Model):
    
    title = models.CharField(verbose_name="标题", max_length=128)
    create_time = models.DateTimeField(verbose_name="创建时间", auto_now_add=True)
    
    class Meta:
        verbose_name = "a. 新闻管理"
        verbose_name_plural = verbose_name
        ordering = ['-create_time']

 

views.py

from rest_framework import pagination


class NewsPagination(pagination.CursorPagination):

    def get_next_link(self):
        try:
            link = super().get_next_link()
            # 自定义链接返回方式
            if link:
                if link.find('127.0.0.1') < 0:
                    return link.replace('http://', 'https://')
            return ""
        except:
            return ""

    # 页码的字段
    cursor_query_param = 'page'
    page_size_query_param = 'size'

    # 每页多少条数据
    page_size = 6
    max_page_size = 200

    # 排序方式
    ordering = ['-create_time']


class NewsView(APIView):

    def get(self, request, *args, **kwargs):
        page_obj = NewsPagination()

        # 查询符合条件的数据
        queryset = News.objects.all()

        # 如果有多个表共用,可以通过下面的方式使用每个表自定义的 ordering 排序
        # page_obj.ordering = News._meta.ordering

        news_data = page_obj.paginate_queryset(queryset, request)

        # 下一页地址
        next = page_obj.get_next_link()

        # 上一页地址
        previous = page_obj.get_previous_link()

        return response_success({
            'next': next,
            'previous': previous,
            'news_data': news_data
        })

 

标签:pagination,obj,name,get,rest,next,link,Django,page
From: https://www.cnblogs.com/chaoqi/p/17730935.html

相关文章

  • Spring Boot RestController接口如何输出到终端
    背景公司项目的批处理微服务,一般是在晚上固定时段通过定时任务执行,但为了预防执行失败,我们定义了对应的应急接口,必要时可以通过运维在终端中进行curl操作。然而,部分任务耗时较长,curl命令执行后长时间没有输出,如果不查看日志,无法知道系统当前的状态,因此有必要研究一下如何在curl命......
  • Django celery 定时任务与周期任务的创建-暂停-开始-删除
    发开阶段遇到了需要定时任务以及周期任务才能进行的事情,这里进行记录一下,防止下次我再写的时候写不明白。首先在你们项目里面创建以下文件:celery:importosos.environ.setdefault("DJANGO_SETTINGS_MODULE","settings")fromceleryimportCeleryfromquality_control.ce......
  • openresty 安装 踩坑
    mac安装由于用brew安装,总是提示openssl路径不存在,故手工安装可以用官方的指导https://openresty.org/cn/installation.html就是注意下面的命令,如果报错,手动指定部分参数即可,"/usr/local/Cellar/[email protected]/1.1.1k"和"/usr/local/Cellar/pcre/8.44/" 替换成自己电脑的路径......
  • django快速建站
    #pipinstalldjango#pipinstallrequestsimportosimporttimedefcreatefile(filepath,filetext):  ifnotos.path.exists(filepath):    withopen(filepath,'w',encoding='utf-8')asfile:      file.write(filetext)ifn......
  • Django的模型设计
    摘要通过Django框架设计一个商城网站,为了记忆其中的关键设置要点,同时对项目的重要知识点进行回顾记忆加深,通过笔记的形式进行记录方便记忆学习。一、商城的路由1、路由的分发规则​ 首先一个完整的路由包含:路由地址、视图函数(或者视图类)、路由变量和路由命名。其中基本信息必......
  • django初学
    其实还有个drf框架#django把框架分为一个项目包含很多应用pythonmanage.pystartapppolls该命令在在manage.py同级下创建应用目录polls是应用的名字!!!!!!!!!!!!!!!!#应用创建完之后需要在setting里面注册 #编写url和views函数的对应关系 页面的话,#映射网页的话,在应......
  • ElasticSearch RestFul 风格
    ......
  • Django跨域问题解决
    Django跨域问题解决今天在学习前端Vue框架的过程中,遇到了跨域相关问题问题1详情:AccesstoXMLHttpRequestat'http://127.0.0.1:8000/book/'fromorigin'http://localhost:63342'hasbeenblockedbyCORSpolicy:No'Access-Control-Allow-Origin'headerispre......
  • Django 聚合查询中 加减操作
    查询订单的定金+支付金额-支付金额错误写法Order.objects.aggregate(sum=Sum(F('final_amt')+F('deposit_amt')-F('refund_amt'))))正确的信息Order.objects.aggregate(sum=Sum(('final_amt')+Sum('......
  • django- 实现模型字段 每天 -1
    fromdjango.dbimportmodelsfromdatetimeimportdatetimeclassMyModel(models.Model):count=models.IntegerField()created_at=models.DateTimeField(auto_now_add=True)defsave(self,*args,**kwargs):ifnotself.created_at:......