# 01.分页配置
[toc]{type: "ol", level: [2, 3, 4, 5]}
### 全局配置
```python
### settings.dev
# 分页配置
# 参数输入:?limit=m&offset=n
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.LimitOffsetPagination',
# 参数输入:?page=n
# 'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 4,
```
### 自定义配置
```python
### user.page
from rest_framework import pagination
class MyPagination(pagination.PageNumberPagination):
# 指定每页显示3条数据
page_size = 3
# 指定显示第几页的数据
page_query_param = 'page'
# 指定显示几条数据
page_size_query_param = 'num'
```
# 02.过滤配置
[toc]{type: "ol", level: [2, 3, 4, 5]}
### 安装注册
```python
pip install django-filter
```
```python
### settings.dev
'django_filters',
```
### 全局配置
```python
### settings.dev
'DEFAULT_FILTER_BACKENDS': [
'django_filters.rest_framework.DjangoFilterBackend',
],
```
### 局部配置
```python
### shop.views.CategoryModelViewSet
from rest_framework import filters
from django_filters.rest_framework import DjangoFilterBackend
# 局部配置搜索过滤 模糊查询
filter_backends = [
# 过滤
DjangoFilterBackend,
# 搜索
filters.SearchFilter,
# 排序
filters.OrderingFilter,
]
# 设置过滤方式:
filterset_fields = ['name']
# 设置搜索方式:
search_fields = ['name']
# 设置排序方式:
ordering_fields = ['id']
```
# 03.局部频次分页等使用
[toc]{type: "ol", level: [2, 3, 4, 5]}
### 局部频次分页等使用
```python
class BookView(APIView):
# from rest_framework_jwt.authentication import JSONWebTokenAuthentication
# authentication_classes = [JSONWebTokenAuthentication]
def get(self, request):
return Response('ok')
# 局部配置
from rest_framework.throttling import AnonRateThrottle, UserRateThrottle
throttle_classes = [AnonRateThrottle, UserRateThrottle]
# 自定义频次类
from shop.throttle import MyAnon, MyUser
# throttle_classes = [MyAnon, MyUser]
# 自定义分页类
from shop.page import MyPagination
pagination_class = MyPagination
```