美文网首页Django入门开发实战
Rest-Framework之视图组件

Rest-Framework之视图组件

作者: 乔治大叔 | 来源:发表于2019-03-12 00:55 被阅读17次

一 基本视图

写一个出版社的增删查改resful接口

路由:

url(r'^publish/$', views.PublishView.as_view()),
url(r'^publish/(?P<pk>\d+)/$', views.PublishDetailView.as_view())

视图:

class PublishSerializers(serializers.ModelSerializer):
    class Meta:
        model=models.Publish
        fields='__all__'

class PublishView(APIView):

    def get(self, request):
        publish_list = models.Publish.objects.all()
        bs = PublishSerializers(publish_list, many=True)
        # 序列化数据

        return Response(bs.data)

    def post(self, request):
        # 添加一条数据
        print(request.data)

        bs=PublishSerializers(data=request.data)
        if bs.is_valid():
            bs.save()  # 生成记录
            return Response(bs.data)
        else:

            return Response(bs.errors)

class PublishDetailView(APIView):
    def get(self,request,pk):
        publish_obj=models.Publish.objects.filter(pk=pk).first()
        bs=PublishSerializers(publish_obj,many=False)
        return Response(bs.data)
    def put(self,request,pk):
        publish_obj = models.Publish.objects.filter(pk=pk).first()

        bs=PublishSerializers(data=request.data,instance=publish_obj)
        if bs.is_valid():
            bs.save() # update
            return Response(bs.data)
        else:
            return Response(bs.errors)
    def delete(self,request,pk):
        models.Publish.objects.filter(pk=pk).delete()

        return Response("")

二 mixin类和generice类编写视图

from rest_framework.mixins import CreateModelMixin,RetrieveModelMixin,ListModelMixin,UpdateModelMixin,DestroyModelMixin
from rest_framework.generics import GenericAPIView
class PublishView(ListModelMixin,CreateModelMixin,GenericAPIView):
    queryset=models.Publish.objects.all()
    serializer_class=PublishSerializers

    def get(self, request):
        return self.list(request)

    def post(self, request):
        return self.create(request)

class PublishDetailView(RetrieveModelMixin,UpdateModelMixin,DestroyModelMixin,GenericAPIView):
    queryset=models.Publish.objects.all()
    serializer_class=PublishSerializers
    def get(self,request,*args,**kwargs):
        return self.retrieve(request,*args,**kwargs)
    def put(self,request,*args,**kwargs):
        return self.update(request,*args,**kwargs)
    def delete(self,request,*args,**kwargs):
        return self.destroy(request,*args,**kwargs)

三 使用generics 下ListCreateAPIView,RetrieveUpdateDestroyAPIView

from rest_framework.generics import ListCreateAPIView,RetrieveUpdateDestroyAPIView
class PublishView(ListCreateAPIView):
    queryset=models.Publish.objects.all()
    serializer_class=PublishSerializers

class PublishDetailView(RetrieveUpdateDestroyAPIView):
    queryset=models.Publish.objects.all()
    serializer_class=PublishSerializers

四 使用ModelViewSet

路由:

url(r'^publish/$', views.PublishView.as_view({'get':'list','post':'create'})),
url(r'^publish/(?P<pk>\d+)/$', views.PublishView.as_view({'get':'retrieve','put':'update','delete':'destroy'})),

视图:

from rest_framework.viewsets import ModelViewSet
class PublishView(ModelViewSet):
    queryset=models.Publish.objects.all()
    serializer_class=PublishSerializers

相关文章

  • 27_rest-framework 视图组件

    rest-framework视图组件 方法一:基本视图 路由配置: 视图层: 方法二: mixin类和generi...

  • Rest-Framework之视图组件

    一 基本视图 写一个出版社的增删查改resful接口 路由: 视图: 二 mixin类和generice类编写视图...

  • 22_rest-framework的序列化组件

    序列化组件 rest-framework序列化之serializers 其他详细操作 简单使用: models.p...

  • rest_framework之序列化

    目录 rest-framework序列化之Serializer rest-framework序列化之ModelSe...

  • Rest-Framework之权限组件

    所谓的权限就是只用超级用户才能访问指定的数据,普通用户不能访问,所以就要有权限组件对其限制。 一、局部使用 局部使...

  • Rest-Framework之频率组件

    用频率组件是为了控制用户对某个url请求的频率,比如,一分钟以内,只能访问三次 自定义频率类,自定义频率规则 自定...

  • Rest-Framework之权限组件

    所谓的权限就是只用超级用户才能访问指定的数据,普通用户不能访问,所以就要有权限组件对其限制。 一、局部使用 局部使...

  • Rest-Framework之频率组件

    用频率组件是为了控制用户对某个url请求的频率,比如,一分钟以内,只能访问三次 自定义频率类,自定义频率规则 自定...

  • Rest-Framework之认证组件

    只有认证通过的用户才能访问指定的url地址,比如:查询数据信息,需要登录之后才能查看,没有登录,就不能查看,这时候...

  • Rest-Framework之认证组件

    只有认证通过的用户才能访问指定的url地址,比如:查询数据信息,需要登录之后才能查看,没有登录,就不能查看,这时候...

网友评论

    本文标题:Rest-Framework之视图组件

    本文链接:https://www.haomeiwen.com/subject/dcewpqtx.html