您的位置:首页 > 移动开发

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

2018-03-02 21:00 513 查看

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

在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: