首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

django rest的视图集调用默认序列化程序的create方法,而不是覆盖方法

Django REST框架是一个用于构建Web API的强大工具。在Django REST框架中,视图集(ViewSets)是一种组织和管理API视图的方式。视图集可以处理常见的CRUD操作(创建、读取、更新、删除),并提供了一种简化和标准化的方式来定义API端点。

当使用Django REST框架的视图集调用默认序列化程序的create方法时,它会执行以下操作:

  1. 接收来自客户端的请求数据。
  2. 使用默认序列化程序对请求数据进行反序列化,将其转换为Python对象。
  3. 调用视图集的create方法,该方法在默认情况下会将反序列化后的数据保存到数据库中,并返回创建的对象实例。
  4. 使用默认序列化程序对创建的对象实例进行序列化,将其转换为响应数据。
  5. 将序列化后的响应数据返回给客户端。

默认序列化程序是根据视图集中定义的模型类自动生成的,它负责将模型实例转换为JSON或其他格式的数据,并将其发送给客户端。默认序列化程序提供了一种简单而方便的方式来处理数据的序列化和反序列化,但在某些情况下可能需要自定义序列化逻辑。

对于以上问题,如果想要调用默认序列化程序的create方法而不是覆盖它,可以按照以下步骤进行操作:

  1. 在视图集中定义一个名为create的方法,并在方法中调用super().create()来执行默认的创建操作。
  2. create方法中,可以在调用super().create()之前或之后添加自定义的逻辑,以满足特定的需求。
  3. 如果需要对创建的对象实例进行进一步处理,可以在create方法中获取返回的对象实例,并对其进行操作。
  4. 最后,可以选择性地使用默认序列化程序对创建的对象实例进行序列化,然后将其返回给客户端。

需要注意的是,如果覆盖了默认的create方法,就需要手动处理数据的反序列化、保存和序列化等步骤,以确保API的正常运行。

关于Django REST框架的更多信息和详细介绍,可以参考腾讯云的相关产品文档:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

DRF框架学习(二)

把其他格式数据转换为程序中数据结构类型,这个过程叫做反序列化过程。 例:将前端传递数据保存到模型对象中过程,叫做反序列化过程。...(label='图书') 4.6反序列化功能(重点掌握) 4.6.1数据校验 is_valid()调用方法进行数据校验,它会先去你定义序列化器类中字段中,看是否满足你条件,然后再进行系统提供校验...新增: 调用serializer.save()时候,会调用系统create方法,然后就会报错,我们如果想不报错,那么我们在序列化器类中重写create方法。...然后使用serializer.data就能获取新增图书序列化字典数据 更新: 1.获取id为1图书 2.创建序列化器对象,要将更新数据,传入对象 3.调用is_valid方法进行数据校验。...遇到这个报错,我们需要重写create方法

4.1K30

Django DRF路由与扩展功能实现

图集与路由使用 使用视图集ViewSet,可以将一系列逻辑相关动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update() 保存数据...destory() 删除数据 ViewSet视图集类不再实现get()、post()等方法,而是实现动作 action 如 list() 、create() 等。...2.GenericViewSet 使用ViewSet通常并不方便,因为list、retrieve、create、update、destory等方法都需要自己编写,而这些方法与前面讲过Mixin扩展类提供方法同名...在视图类中调用多个序列化器""" """原来视图类中基本上一个视图类只会调用一个序列化器,当然也有可能要调用多个序列化器""" from .serializers import StudentInfoModelSerializer...,我们可以重写这个方法来实现根据不同需求来调用不同序列化器 def get_serializer_class(self): if self.request.method == "GET": # 2个字段

3K30

【愚公系列】2022年04月 Python教学课程 70-DRF框架之视图集

destory() 删除数据 ViewSet视图集类不再实现get()、post()等方法,而是实现动作 action 如 list() 、create() 等。...视图集只在使用as_view()方法时候,才会将action动作与具体请求方式对应上。...# 初始化生成序列化器对象 ser = BookSerializer(books, many=True) # 使用序列化器对象data方法获取序列化结果..."""经过上面的处理,我们就已经把所有视图方法写在一个类中了,但是继承父类有点多 所以,drf里面提供了模型视图集[ModelViewSet],可以一次性提供5个api接口方法 最后,def还提供了只读模型视图集...此扩展方法包括:get_serializer_class(获取序列化器返回)、action属性、自定义方法使用 from django.db import DatabaseError from rest_framework.authentication

1.6K30

第 9 篇:实现分类、标签、归档日期接口

一是 action 装饰器,它用来装饰一个视图集方法,被装饰方法会被 django-rest-framework 路由自动注册为一个 API 接口。...视图集中所有以上提及以标准动作命名方法,都会被 django-rest-framework 路由自动注册为标准 API 接口。...django-rest-framework 默认只能识别标准命名图集方法并将其注册为 API,但我们可以添加更多非标准 action,而为了让 django-rest-framework 能够识别这些方法...用法也很简单,实例化序列化字段,调用其 to_representation 方法,将需要序列化值传入即可(其实序列化器在序列对象多个字段时,内部也是分别调用对应序列化字段 to_representation...django-rest-framework 将常用 HTTP 请求状态码常数预定义 status 模块里,使用预定义变量不是直接使用数字好处一是增强代码可读性,二是减少硬编码。

2.6K30

drf之请求、响应、视图

APIView与View不同之处在于: 传入到视图方法REST frameworkRequest对象,不是DjangoHttpRequeset对象; 视图方法可以返回REST framework...提供关于序列化器使用属性与方法 属性:serializer_class  指明视图使用序列化方法: get_serializer_class(self) : 当出现一个视图类中调用多个序列化器时...这五个扩展类需要搭配GenericAPIView 父类,因为五个扩展类实现需要调用GenericAPIView 提供序列化器与数据库查询方法。...() 删除数据 ViewSet视图集类不再实现get()、post()等方法,而是实现动作 action 如 list() 、create() 等。...3.2 action 在视图集中,我们可以通过action对象属性来获取当前请求视图集action动作是哪个。除了默认方法动作外,还可以添加自定义动作。

2.1K20

第 5 篇:用视图集,简化你代码

同样,针对 Web 开发中常见逻辑,django-rest-framework 也提供了通用视图集,进一步简化开发工作。...视图集自动生成 URL 模式非常简单,只需实例化一个路由器,然后调用其 register 方法,这个方法接收 3 个参数,第一个参数是 URL 前缀,所有从注册图集生成 URL 都会带有这个前缀。...django-rest-framework 默认生成规则是 basename-action。...basename 可以不指定,django-rest-framework 会自动从视图集 get_queryset 方法返回结果所关联 model 获取一个默认值,其值为 model 名小写。...不过,根据 Python 之禅,显式优于隐式,因此即使你设置 basename 和 django-rest-framework 默认生成一样,也比不指定要好。

80110

第 10 篇:评论接口

)、视图集(Viewset)、路由器(Router)等 django-rest-framework 提供便利工具,借助这些工具,就可以非常快速地完成 RESTful API 开发。.../ 文章评论列表 API 使用自定义 action,放在 /post/ 接口图集下;发表评论接口使用标准 create action,需要定义单独图集。...方法:首先取到绑定了用户提交数据序列化器,用于反序列化。...接着调用 is_valid 方法校验数据合法性,如果不合法,会直接抛出异常(raise_exception=True)。否则就执行序列化 save 逻辑将评论数据存入数据库,最后返回响应。...提供通用辅助方法,源码也并不复杂,如果不用这些方法,我们自己也可以轻松实现,但既然 django-rest-framework 已经为我们写好了,直接复用就行,具体实现请大家通过阅读源码进行学习。

64830

DjangoRESTframework(补充)

', views.BookInfoViewSet) # 向路由器中注册视图集 urlpatterns += router.urls # 将路由器中所以路由信息追到到django路由列表中 定义序列化器...("图书不是关于Django") return value 2) validate 在序列化器中需要同时对多个字段进行比较验证时,可以定义 validate 方法进行验证 class...APIView与View不同之处在于: 传入到视图方法REST frameworkRequest对象,不是DjangoHttpRequeset对象; 视图方法可以返回REST framework...,被其他视图或扩展类使用,如果我们在视图中想要获取序列化器对象,可以直接调用方法。...在试图中可以调用方法获取详情信息模型类对象。 若详情访问模型类对象不存在,会返回404。

2.2K30

DRF 视图组件

REST framwork 提供视图主要作用: 控制序列化执行(检验、保存、转换数据) 控制数据库查询执行 先来看看这其中的人情世故:两个视图基本类,五个扩展类,九个视图子类,视图集方法,视图集...APIView:DRF最顶层视图类 GenericAPIView:DRF通用视图类 五个扩展类 扩展类不是视图类,没有集成APIView,需要配合GenericAPIView使用,因为五个扩展类实现需要调用...GenericAPIView提供序列化器与数据库查询方法 主要是用来对数据进行增删改查 导入 from rest_framework.mixins import CreateModelMixin...GenericViewSet:使用ViewSet通常并不方便,因为list、retrieve、create、update、destory等方法都需要自己编写,而这些方法与前面讲过Mixin扩展类提供方法同名...As_view ({'get': 'list', 'post': 'create'}) 总结 补充 视图集中定义附加action动作 在视图集中,除了上述默认方法动作外,还可以添加自定义动作。

89610

测试开发进阶(二十九)

方法 两个类视图所对应url地址不一致 再次优化 优化思路:使用动作来触发,不是请求方法 from rest_framework import viewsets viewsets不再支持 get/post...中 View DRF中 APIView GenericAPIView mixins扩展类 CreateAPIView(合并拓展类) 视图集 action和请求方法映射 ViewSet GenericViewSet...第二个参数viewset为视图集「不要加as_view」 将自动生成路由添加到列表中 from django.urls import path, includefrom projects import...__doc__ or None return func return decorator 可以使用action装饰器来声明自定义动作 默认情况下,实例方法名就是动作名 methods...参数用于指定该动作支持请求方法默认为get detail用于指定该动作要处理是否为详情资源对象「url是否需要传递pk值」 在 url.py中添加 path('project/names/', views.ProjectsViewSet.as_view

63810

重点内容回顾-DRF

不是很方便呢? ForeignKey('self')代表是自关联 3.一些常用命令 a. 创建Django工程: django-admin startproject 工程名称 b....return attrs 2.数据保存(新增&更新) 在创建序列化对象时候如果只是传入了data参数,那么就会调用create方法进行数据保存;如果还传入了instance对象,那么就会调用update...5.6视图集 5.6.1概念 将操作同一组资源处理方法(API接口)放在同一个类中 5.6.2注意点 1.视图集处理方法不再以请求方法命名,而是以对应操作(action)名称命名:list/create...5.6.4视图集中添加额外处理方法 1.直接在视图集定义额外处理方法即可 2.在进行url配置时候也要指定请求地址请求方式和处理函数之间对应关系。...举个例子:True表示是xxx/\/action方法名,False表示是xxx/action方法名 6.高级功能 6.1分页 我们可以在配置文件中设置全局分页方式 REST_FRAMEWORK

2.4K20

第 7 篇:文章详情 API 接口

对应规则说明见 使用视图集简化代码),将其在路由器中注册后,django-restframework 自动会自动为我们生成对应 API 接口。...贴心是,django-rest-framework 已经帮我们把 retrieve 逻辑在 mixins.RetrieveModelMixin 里写好了,直接混入视图集即可: class PostViewSet...get_object 方法获取需序列化对象。...lookup_field 属性指定资源筛选字段(默认为 pk)。django-rest-framework 以该字段值从 get_queryset 返回资源列表中筛选出单个资源对象。...类似于视图集 queryset 属性和 get_queryset 方法关系, serializer_class 属性值也可以通过 get_serializer_class 方法返回覆盖,因此我们可以根据不同

99830

python教程

create()和update()方法定义了在调用serializer.save()时成熟实例是如何被创建和修改。...记住,ModelSerializer类并没有做什么有魔力事情,它们仅仅是一个创建序列化快捷方式。 一个自动决定字段集合。 简单默认create()和update()方法实现。...用我们序列化来写常规Django视图 让我们看看,使用我们新序列化类,我们怎么写一些API视图。此刻,我们不会使用REST框架其他特性,仅仅像写常规Django视图一样。...我们不会返回一个对象实例,而是对象实例一个属性。 我们会是使用基类代表实例,并创建我们自己.get()方法不是用普通视图。...ViewSet类几乎和View类一样,除了他们提供像read或update操作,不是像get和put方法

5K10

第 11 篇:基于 drf-haystack 文章搜索接口

django-haystack 默认返回搜索结果是一个类似于 django QuerySet 对象,需要配合模板系统使用,因为未被序列化,所以无法直接用于 django-rest-framework...但是,通过之前功能我们看到,使用 django-rest-framework 是一个近乎标准化但又枯燥无聊过程:首先是编写序列化器用于序列化资源,然后是编写视图集,提供对资源各类操作接口。...这两个功能,辅助类均已经为我们提供了,我们只需要调用所需方法就行。...通过调用序列化字段 to_representation 方法对输入值进行序列化,这个方法接收第一个参数就是需要序列化值。...Highlighter 辅助类,然后调用 highlight 方法将需要序列化值进行进一步高亮处理。

1.6K20

drf框架中所有视图及用法

0909自我总结 drf框架中所有视图及用法 一.drf框架中所有视图类 from django.views import View from rest_framework import views,...上述视图都是基于django自带views进行相关方法分装 二.viewsets视图集 ViewSetMixin:视图集工具 - 重写as_view - 将 请求方式 映射到视图类中 指定方法...kwargs):获取指定 常用几个参数 data:用于返序列化传参 many:获取多个序列化对象 instance:如果有后面save执行更新方法,没有执行创建方法 partial:为True可以进行局部字段修改...,默认为False为所有字段修改 使用这些方法重要前提必须要 queryset serializer_class 如果我们要使用get_object()必须前端传给我们一个pk 四.mixins使用...居然有什么方法看源码即可ctrl+左键看源码 六自定制视图 本来get他就只会找类中get方法我们可以对其设置让他找我们对于名称 路由层 from django.conf.urls import url

1.8K30

DRF框架学习(三)

b)方法: get_serializer创建一个视图所使用序列化器类对象。 get_serializer_class返回当前视图所使用序列化器类。...get_object从视图所使用查询集中查询指定对象,默认根据pk(查询)进行查询。...时间长了之后,就知道该怎么写最简单代码了。 2.视图集 2.1概念 将操作同一组资源处理方法(API接口)同一个类中。...(重要) 2.2注意点 1、视图集处理方法不再是以请求方式命名,而是以对应操作名称(list、create、update、retrieve、destroy) 2、在进行url配置时候,要指明请求地址请求方式和视图集中处理函数之间对应关系...2.4视图集中添加额外处理方法 1、直接在视图集中定义额外处理方法即可 2、在进行url配置时候指定请求地址请求方式和处理函数之间对应关系。

1.1K20

Django rest-framework视图家族

类属性,提供序列化类并使用自定义序列化序列化 总结:GenericAPIView就是在APIView基础上额外提供了三个方法和三个类属性,如果不配合视图工具类,则体现不出来优势所在 使用它好处:视图中增删改查逻辑其实大差不差...的话那就是manager对象,不是QuerySet对象 queryset = models.Car.objects.filter(is_delete=False).all() # 配置使用序列化类...群查方法 create:单增方法 update:单整体改方法 partial_update:单局部改方法 destroy:单删方法 使用mixins六大工具方法 继承GenericAPIView类 配置对哪个表进行操作...使用generics工具类实现接口 配置对哪个表进行操作 配置使用哪个序列化类 from rest_framework import generics class ViewGenericsAPIView...重写as_view方法,增加action参数(可以完成路由层请求方法映射关系) 可以在路由层中自定义请求方法映射关系 使用viewsets图集类实现接口 配置对哪个表进行操作 配置使用哪个序列化

74220

构建强大API-DjangoREST框架探究与实践

在views.py中定义了一个视图集,使用了ModelViewSet,它提供了默认CRUD操作。在urls.py中配置了路由,将API端点映射到对应图集上。6....数据序列化与性能优化在处理大量数据时,有效地序列化和反序列化数据对性能至关重要。Django REST框架提供了丰富序列化和性能优化功能,可以帮助我们提高应用程序性能和效率。...Django REST框架提供了一些性能优化技巧,可以帮助我们提高序列化和反序列化操作效率。...文件上传与存储在许多应用程序中,文件上传和存储是常见需求。Django REST框架提供了简单强大文件上传和存储功能,使我们能够轻松地处理文件上传和管理。...首先,我们学习了如何使用Django REST框架来创建简单API端点,包括定义模型、序列化器、视图集以及路由配置等。

32620
领券