DRF使用记录(四) - 功能补充

功能补充

分页Pagination

全局设置

setting.py文件

REST_FRAMEWORK = {
    'DEFAULT_PAGINATION_CLASS':  'rest_framework.pagination.PageNumberPagination',
    'PAGE_SIZE': 10  # 每页数目
}
局部设置(自定义)
PageNumberPagination分页器
  • 自定义Pagination
  • 视图中通过pagination_clas属性指明
class YourPagination(PageNumberPagination):
    page_size = 10
    page_size_query_param = 'size'
    max_page_size = 100
    page_query_param = "page"  # page和size参数名都可自定义
class YourlView(RetrieveAPIView):
    queryset = BookInfo.objects.all()
    serializer_class = BookInfoSerializer
    pagination_class = YourPagination # 指定分页器

访问:GET 127.0.0.1:8000/users?page=2&size=5

  • page_size 每页数目

  • page_query_param 前端发送的页数关键字名,默认为"page"

  • page_size_query_param 前端发送的每页数目关键字名,默认为None

  • max_page_size前端最多能设置的每页数量

  • 如果在视图内关闭分页功能,只需在视图内设置

pagination_class = None
LimitOffsetPagination分页器
from rest_framework.pagination import LimitOffsetPagination
class YourPagination(LimitOffsetPagination):
    # 默认每一页查询的数据量,类似上面的page_size
    default_limit = 2
    limit_query_param = "limit"
    offset_query_param = "offset"
    max_limit = 100

class YourAPIView(ListAPIView):
    queryset = Student.objects.all()
    serializer_class = StudentModelSerializer
    pagination_class = YourPagination
  • default_limit 默认限制,默认值与PAGE_SIZE设置一直
  • limit_query_param limit参数名,默认’limit’
  • offset_query_param offset参数名,默认’offset’
  • max_limit 最大limit限制,默认None

访问:GET 127.0.0.1:8000/users?offset=2&limit=5

接口文档

  • REST framework提供了自动生成接口文档功能
  • 接口文档以网页的方式呈现
  • 自动接口文档能生成的是继承自APIView及其子类的视图
安装依赖
  • REST framewrok生成接口文档需要coreapi库的支持
pip install coreapi -i https://pypi.douban.com/simple
settings.py文件配置
REST_FRAMEWORK = {
    'DEFAULT_SCHEMA_CLASS': 'rest_framework.schemas.AutoSchema'
}
配置访问路由
  • 在总路由中添加接口文档路径
  • 文档路由对应的视图配置为rest_framework.documentation.include_docs_urls
  • 参数title为接口文档网站的标题
from rest_framework.documentation import include_docs_urls

urlpatterns = [
    ...
    path('docs/', include_docs_urls(title='xxxAPI接口文档'))
]
文档说明定义
  • 单一方法的视图,可直接使用类视图的文档字符串
class UserListView(generics.ListAPIView):
    """
    返回所有用户信息
    """
  • 多个方法的视图
class UserListCreateView(generics.ListCreateAPIView):
    """
    get:
    返回所有用户信息

    post:
    新建用户
    """

访问 GET 127.0.0.1:8000/docs/

在这里插入图片描述

Demo代码

drf_demo

待续…

发布了53 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42874994/article/details/103158088
今日推荐