dir_分页,排序,过滤

分页

models.py


from django.db import models


class Book(models.Model):
    name =models.CharField(max_length=32)
    price = models.IntegerField()
    publish = models.CharField(max_length=64)

views.py

from rest_framework.generics import  ListAPIView
from rest_framework.mixins import CreateModelMixin
from app01.models import Book
from .serializer import BookSerializers
from rest_framework.viewsets import ViewSetMixin
from app01.pagination import MyPageNumberPagination




from rest_framework.generics import  ListAPIView
from rest_framework.mixins import CreateModelMixin
from app01.models import Book
from .serializer import BookSerializers
from rest_framework.viewsets import ViewSetMixin
from app01.pagination import MyPageNumberPagination,MyLimitOffsetPagination,MyCursorPagination




class BookView(ViewSetMixin,ListAPIView,CreateModelMixin):
    pagination_class=MyPageNumberPagination,MyLimitOffsetPagination,MyCursorPagination
    queryset = Book.objects.all()
    serializer_class = BookSerializers



url.py

from django.contrib import admin
from django.urls import path
from rest_framework.routers import  SimpleRouter
from app01 import views

router=SimpleRouter()
router.register('books',views.BookView,'books')


urlpatterns = [
    path('admin/', admin.site.urls),
]
urlpatterns += router.urls

serializer.py

from  rest_framework import serializers
from app01.models import Book
class BookSerializers(serializers.ModelSerializer):

      class Meta:
          model = Book
          fields = "__all__"

pagination.py

from  rest_framework.pagination import PageNumberPagination,LimitOffsetPagination,CursorPagination

#最常用的
class MyPageNumberPagination(PageNumberPagination):
    page_size = 3 # 每页显示的条数
    page_query_param = 'page' # /books/?page=3  查询第几页的参数
    page_size_query_param = 'size'# /books/?page=3&size=4  # 查询第三页,每页显示4条
    max_page_size = 10  # 限制通过size查询,最大的条数

#从哪条开始
class MyLimitOffsetPagination(LimitOffsetPagination):
    default_limit = 2  # 每页显示的条数
    limit_query_param = 'limit' # /books/?limit=4   这一页显示4条数据
    offset_query_param = 'offset'  # /books/?offset=3&limit=4  # 从第3条开始,取4条数据
    max_limit = 4 # 限制最多显示多少条


#适用于大数据的
class MyCursorPagination(CursorPagination):
    cursor_query_param = 'cursor'
    page_size = 2 #每页显示条数
    max_page_size = 3 # 排序,必须是表中得字段
 

排序 ,过滤

from rest_framework.filters import OrderingFilter,SearchFilter
class BookView(ViewSetMixin, ListAPIView, CreateModelMixin):
    pagination_class = MyPageNumberPagination  # 必须继承GenericAPIView才有这个类属性
    queryset = Book.objects.all()
    serializer_class = BookSerializer
    排序类的配置
    filter_backends=[OrderingFilter,]
    指定按哪个字段排序
    ordering_fields=['id','price']

    # 指定过滤类
    filter_backends=[SearchFilter,]
    # 指定过滤字段
    search_fields=['name','publish']

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`__dir__` 是一个特殊方法(也称为魔术方法或魔法方法),用于定义一个对象的自定义 `dir()` 行为。当使用内置函数 `dir()` 来获取一个对象的属性和方法列表时,如果该对象定义了 `__dir__` 方法,Python 会调用该方法来获取列表。 例如,假设有一个自定义的类 `MyClass`,我们可以在该类中定义 `__dir__` 方法来返回自定义的属性和方法列表。下面是一个示例: ```python class MyClass: def __dir__(self): return ['attr1', 'attr2', 'method1', 'method2'] obj = MyClass() print(dir(obj)) ``` 输出结果为: ``` ['attr1', 'attr2', 'method1', 'method2'] ``` 可以看到,我们在 `MyClass` 类中定义了 `__dir__` 方法,该方法返回了一个自定义的属性和方法列表。当调用 `dir(obj)` 时,Python 会调用 `obj.__dir__()` 方法来获取列表。 另一方面,`dir()` 是一个内置函数,用于获取一个对象的属性和方法列表。当我们调用 `dir(obj)` 时,Python会返回该对象所有可用的属性和方法的名称列表。 ```python obj = [1, 2, 3] print(dir(obj)) ``` 输出结果为: ``` ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] ``` 可以看到,`dir(obj)` 返回了一个包含列表对象 `obj` 的所有属性和方法名称的列表。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值