【Django REST framework通过viewsets.GenericViewSet和router(最常用的功能最全】)实现序列化(5)


发布时间:2020-02-17 15:26    作者: 晖哥哥   已过去:1 年,9 月   阅读总量:1122 已被赞:1


前面已经逐步学习了多种实现序列化的view,本篇将学习通过viewsets.GenericViewSet(最常用的功能最全)来实现序列化,也是最常用的一种。

再结合router,实现便捷的url注册功能,快速开发我们的API

 

改用router来注册url,我们修改blog/url.py

from django.urls import re_path,include
from blog import views
#引入router
from rest_framework.routers import DefaultRouter   #1
#生成router对象
router = DefaultRouter()    #2
#配置blog的url
router.register(r'',views.Blog_PostslistView)    #3
urlpatterns = [
    #path('', views.Blog_PostslistView.as_view(),name='blog_list'),
    # 这项就不要了由router代替了
    re_path(r'^',include(router.urls))    #4
]

 

blog/view.py 修改视图

from rest_framework.pagination import PageNumberPagination
#配置分页
class Blog_PostsPagination(PageNumberPagination):
    page_size = 5 #每页多少条数据
    page_size_query_param = 'page_size' #像后台请求多少条,?page_siz=20
    page_query_param = 'p' #url上分页标识 eg: ?p=2
    max_page_size = 100 #最大单页数量

 

from rest_framework import mixins
from rest_framework import viewsets
from .models import Blog_Posts
from .serializer import Blog_PostsSerializer
#序列化视图
class Blog_PostslistView(mixins.ListModelMixin,viewsets.GenericViewSet):
    '''
   viewsets.GenericViewSet结合router实现序列化
    '''
    queryset = Blog_Posts.objects.all()
    serializer_class = Blog_PostsSerializer
    pagination_class = Blog_PostsPagination
 

打开 http://127.0.0.1:8000/blog/ 效果:

点赞

1




登陆后方可评论