全局配置过滤器
- 下载所需要的第三方包
- pip install django-filter
INSTALLED_APPS = [
'django_filters'
]
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': (
'django_filters.rest_framework.DjangoFilterBackend')
}
from rest_framework.viewsets import ModelViewSet
from app01.sers import User,UserSer
from django_filters.rest_framework import DjangoFilterBackend
class UserModelView(ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSer
filter_fields = ('username', 'age', 'home')
class UserModelView(ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSer
filter_backends = [OrderingFilter, DjangoFilterBackend]
filter_fields = ('username', 'age', 'home')
- 请求时在get请求⾥最后加上对应的条件
- http://127.0.0.1:8000/dm3/user/?home=北京&username=张三
全局分页
REST_FRAMEWORK = {
'DEFAULT_PAGINATION_CLASS': 'rest_framework.pagination.PageNumberPagination',
'PAGE_SIZE': 3
}
- 请求时在get请求⾥最后加上对应的条件
- http://127.0.0.1:8000/dm3/user/?page=3
局部分页
from rest_framework.viewsets import ModelViewSet
from rest_framework.pagination import PageNumberPagination
from app01.sers import User,UserSer
class MyPage(PageNumberPagination):
page_size_query_param = "max_page"
page_query_param = "page"
class UserModelView(ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSer
pagination_class = MyPage
- 请求时在get请求⾥最后加上对应的条件
- http://127.0.0.1:8000/dm3/user/?page=3&max_page=3
限次
REST_FRAMEWORK = {
'DEFAULT_THROTTLE_CLASSES': (
'rest_framework.throttling.AnonRateThrottle',
'rest_framework.throttling.UserRateThrottle'
),
'DEFAULT_THROTTLE_RATES': {
'anon': '3/day',
'user': '1000/day'
}
排序
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': ('rest_framework.filters.OrderingFilter',)
}
from rest_framework.viewsets import ModelViewSet
from rest_framework.filters import OrderingFilter
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.pagination import PageNumberPagination
from app01.sers import User,UserSer
class UserModelView(ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSer
ordering_fields = ('age', 'hight')
class UserModelView(ModelViewSet):
queryset = dm1model.User.objects.all()
serializer_class = dm3ser.UserSer
filter_backends = [OrderingFilter]
ordering_fields = ("age","hight")
- 请求时在get请求⾥最后加上对应的条件
- http://127.0.0.1:8000/dm3/user/?ordering=hight
过滤和排序联合使用
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': (
'django_filters.rest_framework.DjangoFilterBackend',
'rest_framework.filters.OrderingFilter')
}
from rest_framework.viewsets import ModelViewSet
from rest_framework.filters import OrderingFilter
from django_filters.rest_framework import DjangoFilterBackend
from app01.sers import User,UserSer
class UserModelView(ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSer
ordering_fields = ('age', 'hight')
filter_fields = ('username', 'age', 'home')
- 请求时在get请求⾥最后加上对应的条件
- http://127.0.0.1:8000/dm3/user/?ordering=hight&home=“北京”