첫째, 페이지 매김
데이터가 매우 큰 경우, 우리는 페이징을 사용할 필요가있다. 전송 요청의 프론트 엔드, 나는 데이터 만 해당 페이지를 전송, 데이터베이스에서 처음 몇 페이지를 취할 것, 데이터의 처음 몇 페이지를 촬영합니다.
-
1, 데이터의 양이 매우 많은 시간, 당신은 일부에 의해 부분을 선택해야합니다.
①,导入类。 from rest_framework.pagination import PageNumberPagination # 默认的分页类 ②,引用类。 def get(self, request): book_list = Book.objects.all() pnp = PageNumberPagination() # 分页使用 paged_book_list = pnp.paginate_queryset(book_list,request) # 分完页之后的书籍列表 bs = BookSerializer(paged_book_list, many=True) return Response(bs.data) ③,settings中设置全局页数,"PAGE_SIZE":5 REST_FRAMEWORK={ "PAGE_SIZE":5 # 如果这样设,所有的模型表分页都按照这个来了,因为每个表的数据量不同,所以没必要设置都一样 } ④,取数据。 http://127.0.0.1:8000/book/?token=f0a77220-255f-414a-9bd8-09a5893649de&page=2
-
모든 모델을 작성합니다 2, 테이블 위에 페이징 같다. 쓰기도 있습니다.
①,导入类 from rest_framework.pagination import PageNumberPagination ②,自定义类,并覆盖所需变量。 def get(self, request): class MyPageNumberPagination(PageNumberPagination): page_size=2 page_query_param="page_num" # url上需要加的参数 page_size_query_param="size" # 用于调整每页数据,如果前端不设置,就用我自己的每页多少条,如果前端想设置,就使用这个词。 max_page_size=5 # 最多显示条数,配合上面使用,设置可调之后才进行约束 # http://127.0.0.1:8000/book/?token=f0a77220-255f-414a-9bd8-09a5893649de&page_num=2&size=3 # 每页显示3条的第2页,一般这样写↓,先设置每页显示多少条,再说显示第几页。 # http://127.0.0.1:8000/book/?token=f0a77220-255f-414a-9bd8-09a5893649de&size=3&page_num=5 book_list=Book.objects.all() pnp=MyPageNumberPagination() # 分页使用 paged_book_list=pnp.paginate_queryset(book_list,request) # 分完页之后的书籍列表 bs = BookSerializer(paged_book_list, many=True) return Response(bs.data)
-
호출기를 사용하는 방법 3, 완전히 캡슐화 된 뷰 클래스
①,from rest_framework.pagination import PageNumberPagination ②,class MyPageNumberPagination(PageNumberPagination): page_size = 2 # 自定义每页数据 ③,class AuthorsView(ModelViewSet): queryset = Author.objects.all() serializer_class = AuthorSerializer pagination_class = MyPageNumberPagination ④,显示出来的是这样的数据 { "count": 3, "next": "http://127.0.0.1:8000/authorsss/?page=2&token=f0a77220-255f-414a-9bd8-09a5893649de", "previous": null, "results": [ { "nid": 1, "name": "王七", "age": 30 }, { "nid": 2, "name": "李四", "age": 28 } ] }
두, URL 등록
1,如果是数据模型,只有简单的增删改查查的话可以简单的封装成一个类
class AuthorsView(ModelViewSet):
queryset = Author.objects.all()
serializer_class = AuthorSerializer
2,但是url需要自己写,两条。
url(r'^authorsss/$',views3.AuthorsView.as_view({'get':'list','post':'create'})),
url(r'^authorsss/(?P<pk>\d+)/',views3.AuthorsView.as_view({'get':'retrieve','delete':'destroy','put':'update'})),
3,但是用了注册器就不用自己写路由了,并且还多了两条。
使用:
from rest_framework import routers
router = routers.DefaultRouter()
router.register('authorssssss',views3.AuthorsView) # 所需变量:路由,视图类
from django.conf.urls import url,include
url(r'^',include(router.urls))
셋째, 릴리스 , 필터 , 렌더러
HTTPS : //www.jianshu.com/p/d92bb4ad8e4b 재현