Django框架休息视图和路由详解

  


  

  

在Django REST框架中内置的请求类扩展了Django中类的请求,实现了很多方便的功能,如请求数据解析和认证等。

  

比如,区别于Django中的请求从request.GET中获取URL参数,从request.POST中取某些情况下的帖子数据。

  

在APIView中封装的请求,就实现了请求数据的解析:

  

对于得到请求的参数我们通过request.query_params来获取。

  

对于帖子请求,请求的数据我们通过request.data来获取。

  

  

<强>序列化

        从rest_framework进口序列化器   从app01导入模型         类CommentSerializer (serializers.ModelSerializer):   类元:   模型=models.Comment   字段=" __all__ "   extra_kwargs={   “内容”:{“error_message”:{“要求”:“评论内容不能为空"}},   “条”:{“error_message”:{“要求”:“文章不能为空"}}   }         类SchoolSerializer (serializers.ModelSerializer):   类元:   模型=models.School   字段=" __all__ "      

  

<>强视图
  

        从rest_framework。视图导入APIView   类SchoolView (APIView):   def get(自我,请求,* args, * * kwargs):   query_set=models.School.objects.all ()   ser_obj=app01_serializers。SchoolSerializer (query_set,许多=True)   返回响应(ser_obj.data)         类SchoolDetail (APIView):   def get(自我、请求、pk * args, * * kwargs):   obj=models.School.objects.filter (pk=pk)当代()   ser_obj=app01_serializers.SchoolSerializer (obj)   返回响应(ser_obj.data)      


  

  

<>强视图
  

        从rest_framework。仿制药进口GenericAPIView #公共类   从rest_framework。mixin进口ListModelMixin RetrieveModelMixin, CreateModelMixin #混合类必须与公共类搭配着使用      类SchoolView (GenericAPIView mixins.ListModelMixin): #查看学校列表   queryset=models.School.objects.all ()   serializer_class=app01_serializers.SchoolSerializer      def get(自我,请求,* args, * * kwargs):   回归自我。列表(请求、* args * * kwargs)         类SchoolDetail (GenericAPIView mixin。RetrieveModelMixin mixins.CreateModelMixin): #创建,与具体查出某一条记录   queryset=models.School.objects.all ()   serializer_class=app01_serializers.SchoolSerializer      def get(自我、请求、pk * args, * * kwargs):   回归自我。检索(请求、pk * args, * * kwargs)      def post(自我,请求,* args, * * kwargs):   回归自我。创建(请求、* args * * kwargs)      

<>强路由
  

        url (r 'school/$’, views.SchoolView.as_view ()),   url (r 'school/(& # 63;术中;pk> \ d +)/$’, views.SchoolDetail.as_view ()),      


  

  

<>强视图
  

        从rest_framework。仿制药进口GenericAPIView ListCreateAPIView RetrieveUpdateAPIVie   类SchoolView (ListCreateAPIView): #创建   queryset=models.School.objects.all ()   serializer_class=app01_serializers.SchoolSerializer         类SchoolDetail (RetrieveUpdateDestroyAPIView): #更新   queryset=models.School.objects.all ()   serializer_class=app01_serializers.SchoolSerializer      

路由同上
  

  


  

  

<>强视图
  

        从rest_framework。viewsets进口ModelViewSet #里面封装了操作的所有方法,增删改查查   类SchoolView (ModelViewSet):   queryset=models.School.objects.all ()   serializer_class=app01_serializers.SchoolSerializer      

<>强路由
  

        url (r 'school/$’, views.SchoolView.as_view(行动={   “获得”:“名单”,   “post”:“创造”,   })),   url (r 'school/(& # 63;术中;pk> \ d +)/$’, views.SchoolView.as_view(行动={   “得到”:“检索”,   “把”:“更新”,   “补丁”:“partial_update”,   “删除”:“破坏”   })),      


  

  

<>强视图
  

  

同上   

<>强路由
  

        从rest_framework。路由器进口DefaultRouter      路由器=DefaultRouter ()   路由器。注册(r 'school’, views.SchoolView)   urlpattern +=router.urls

Django框架休息视图和路由详解