restful专栏 12.分页与过滤

 

# 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
```

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值