Django REST app添加搜索功能和分页功能

页面的过滤功能和分页功能

在Django REST中框架提供了非常方便操作的过滤功能和分页功能。这些功能既能在settings中直接设置成全局的功能,又能在不同的视图类中使用设置成具体页面的功能。

过滤功能

Django REST 中过滤主要提供两部分功能。
一是搜索功能,
二是排序功能。

  • SearchFilter
  • OrderingFilter

具体的代码设置如下:

1.首先在settings中安装过滤功能app

INSTALLED_APPS = [
    ...
    'rest_framework',
    'django_filters', #网页搜索功能
    'corsheaders',
    ...
]

2.settings全局设置过滤功能(若要针对具体页面定制过滤功能,可以之后在具体views中声明,具体的功能会覆盖掉全局设置的功能):

REST_FRAMEWORK = {
    'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',)
}

3.局部视图类设置过滤功能(设置具体的搜索功能):

#导入排序过滤器类和搜索过滤器类
from rest_framework.filters import OrderingFilter, SearchFilter
class ProductListView(generics.ListAPIView):
    """
    产品列表
    """
    ...
    #筛选器后台,搜索过滤器和排序过滤器
    filter_backends = (SearchFilter, OrderingFilter,)
    #搜索的是description字段的内容
    search_fields = ('description',)
    #排序功能根据以下的四个字段排序
    ordering_fields = ('category', 'manufacturer', 'created', 
        'sold')
    #默认排序的字段
    ordering = ('id',)
    ...
分页功能

Django REST 中分页设置也能提供两部分功能。
一是直接设置默认页面的显示个数,
二是可以利用url自定义显示偏移的页面个数。

  • PageNumberPagination
  • LimitOffsetPagination

具体的代码设置如下:

1.在settings中设置全局的分页方式:

#增加分页功能,rest框架的设置都在这个字典内
REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
    #全局的分页方式,优先级低于具体类的具体分页方式
    'PAGE_SIZE':6,
}

2.在具体页面设置分页方式:

class ProductListView(generics.ListAPIView):
    """
    产品列表
    """
    ...
    #分页方式是limit,修改值会修改每页显示的条数http://127.0.0.1:8000/computer/product_list/?limit=2&offset=10 偏移是10条数据
    pagination_class = LimitOffsetPagination
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值