Django REST framework基础:视图和路由

在原来modelserializers基础上进行了一次封装方便了使用

# author

class AuthorModelSerializers(serializers.ModelSerializer):
    class Meta:
        model = models.Author
        fields = "__all__"

from rest_framework import mixins
from rest_framework import generics

class AuthorView(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView):
    # queryset serializer 这两个方法一定要定义成这个不然取不到值
    queryset = models.Author.objects.all()
    serializer_class = AuthorModelSerializers

    def get(self, request, *args, **kwargs):
        return self.list(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)

class AuthorDetaiView(mixins.RetrieveModelMixin, mixins.DestroyModelMixin, mixins.UpdateModelMixin,
                      generics.GenericAPIView):
    # queryset serializer 这两个方法一定要定义成这个不然取不到值
    queryset = models.Author.objects.all()
    serializer_class = AuthorModelSerializers

    def get(self, request, *args, **kwargs):
        return self.retrieve(request, *args, **kwargs)

    def delete(self,request,*args,**kwargs):
        return self.destroy(request,*args,**kwargs)

    def put(self,request,*args,**kwargs):
        return self.update(request,*args,**kwargs)

使用通用的基于类的视图(封装第三次减少了代码量)

# author
class AuthorModelSerializers(serializers.ModelSerializer):
    class Meta:
        model = models.Author
        fields = "__all__"

from rest_framework import mixins
from rest_framework import generics

# 封装了3层
class AuthorView(generics.ListCreateAPIView):
    # queryset serializer 这两个方法一定要定义成这个不然取不到值
    queryset = models.Author.objects.all()
    serializer_class = AuthorModelSerializers

# 封装了3层
class AuthorDetaiView(generics.RetrieveUpdateDestroyAPIView):
    # queryset serializer 这两个方法一定要定义成这个不然取不到值
    queryset = models.Author.objects.all()
    serializer_class = AuthorModelSerializers

使用视图集viewsets.ModelViewSet

原理:



# author

class AuthorModelSerializers(serializers.ModelSerializer):    class Meta:        model = models.Author        fields = "__all__"

from rest_framework import mixinsfrom rest_framework import generics

class AuthorView(mixins.ListModelMixin, mixins.CreateModelMixin, generics.GenericAPIView):    # queryset serializer 这两个方法一定要定义成这个不然取不到值queryset = models.Author.objects.all()    serializer_class = AuthorModelSerializers

    def get(self, request, *args, **kwargs):        return self.list(request, *args, **kwargs)

    def post(self, request, *args, **kwargs):        return self.create(request, *args, **kwargs)

class AuthorDetaiView(mixins.RetrieveModelMixin, mixins.DestroyModelMixin, mixins.UpdateModelMixin,generics.GenericAPIView):    # queryset serializer 这两个方法一定要定义成这个不然取不到值queryset = models.Author.objects.all()    serializer_class = AuthorModelSerializers

    def get(self, request, *args, **kwargs):        return self.retrieve(request, *args, **kwargs)

    def delete(self,request,*args,**kwargs):        return self.destroy(request,*args,**kwargs)

    def put(self,request,*args,**kwargs):        return self.update(request,*args,**kwargs)

原文地址:https://www.cnblogs.com/Rivend/p/11832388.html

时间: 2024-08-12 22:17:21

Django REST framework基础:视图和路由的相关文章

Django rest framework (视图类详解)

官网:https://www.django-rest-framework.org/api-guide/viewsets/ 在django rest framework 视图中一共有N个类 第一类:APIview class IndexView(APIView): def get(self,request,*args,**kwargs): pk = kwargs.get('pk') if pk: queryset = models.UserInfo.objects.get(pk=pk) ser =

Django Rest framework基础使用之Request/Response

1.Request restframework提供了一个Request对象(rest_framework.request.Request) Request对象继承了Django默认的HttpRequest对象,它最核心的功能就是请求数据都包含在request.data属性中,类似于Django的request.POST,但是request.data应用范围更广: 1)request.data:返回解析之后的请求体数据,类似于Django中标准的request.POST和request.FILES

DRF Django REST framework 之 视图组件(四)

引言 在我们有几十上百的视图类,都有get,post等方法,在功能类似时,会导致大量的重复代码出现,显然还有很多可以优化的地方.这也就有了视图组件,它的功能非常强大,能很好的优化接口逻辑. 视图组件 使用视图组件的mixin优化接口逻辑 导入 mixins 定义序列化类 定义视图类 # 1.导入mixins from rest_framework.mixins import ( ListModelMixin, CreateModelMixin, DestroyModelMixin, Update

Django rest framework 基础

1.1 什么是RESTful 1. REST与技术无关,代表的是一种软件架构风格(REST是Representational State Transfer的简称,中文翻译为“表征状态转移”) 2. REST从资源的角度类审视整个网络,它将分布在网络中某个节点的资源通过URL进行标识 3. 所有的数据,不过是通过网络获取的还是操作(增删改查)的数据,都是资源,将一切数据视为资源是REST区别与其他架构风格的最本质属性 4. 对于REST这种面向资源的架构风格,有人提出一种全新的结构理念,即:面向资

Django Rest framework基础使用之 serializer

rest-framework文档地址:http://www.django-rest-framework.org/ 1.安装:pip install djangorestframework 说明:如果安装coreapi的时候,出现utf-8报错,可以将虚拟环境中的Lib---->site package--->pip--->compat---__init__.py中的第75行return s.decode("utf-8")改为"gbk",然后unin

轻轻松松学会 DRF Django REST framework

DRF Django REST framework 之 APIView(一) DRF Django REST framework 之 解析器(二) DRF Django REST framework 之 序列化(三) DRF Django REST framework 之 视图组件(四) 持续更新中.... 原文地址:https://www.cnblogs.com/pungchur/p/12028316.html

Django Rest Framework源码剖析(八)-----视图与路由

一.简介 django rest framework 给我们带来了很多组件,除了认证.权限.序列化...其中一个重要组件就是视图,一般视图是和路由配合使用,这种方式给我们提供了更灵活的使用方法,对于使用者而言不同的视图具有不同的功能,这样我们可以根据需求定制自己视图.以下是官网传送门:http://www.django-rest-framework.org/api-guide/views/ 在之前的文章中,由于参杂了权限.认证等(如果不了解请看博客的以前的文章),但在本章中基本可以不使用,所进使

Django REST framework - 视图

目录 Django REST framework 视图GenericAPIView GenericAPIView 例子 属性 混入 具体视图类 自定义基类 Django REST framework 视图GenericAPIView GenericAPIView 这个类扩展了REST框架的APIView类,通过GenericAPIView与一个或多个mixin类组合而构建的 例子 在使用通用视图时,将覆盖原视图,并设置多个类属性 from django.contrib.auth.models i

Django REST framework视图

Django REST framework视图 学习序列化的时候发现有大量的冗余代码,所以我们要使用Django REST framework里的视图减少我们的代码 DRF中的request 在Django REST Framework中内置的Request类扩展了Django中的Request类,实现了很多方便的功能--如请求数据解析和认证等. 比如,区别于Django中的request从request.GET中获取URL参数,从request.POST中取某些情况下的POST数据. 在API