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

【愚公系列】2022年04月 Python教学课程 62-DRF框架介绍

文章目录 一、DRF简介 二、DRF特点 三、DRF增删改查 一、DRF简介 Django REST framework框架是一个用于构建WebAPl强大而又灵活工具。...特点 DRF又如下特点: 提供了定义序列化器Serializer方法,可以快速根据DjangoORM或者其它库自动序列化/反序列化。...直观APIweb界面。 可扩展性,插件丰富. 三、DRF增删改查 在序列化与反序列化时,虽然操作数据不尽相同,但是执行过程却是相似的,也就是说这部分代码是可以复用简化编写。...在开发RESTAP图中,虽然每个视图具体操作数据不同,但增、删、改、查实现流程基本套路化,所以这部分代码也是可以复用简化编写: 增:校验请求数据->执行反序列化过程->保存数据库->将保存对象序列化返回...删:判断要删除数据是否存在->执行数据库删除 改:判断要修改数据是否存在一>校验请求数据->执行反序列化过程>保存数据库->将保存对象序列化返回 查:查询数据库->将数据序列化返回 Django

53220

drf之请求、响应、视图

1.2.2 常用属性 .data 传给Response对象序列化但尚未render处理数据 .status_code 状态码数字 .content 经过render处理响应数据...get_serializer(self, *args, **kwargs) :返回序列化对象,主要用来提供给Mixin扩展类使用,如果我们在视图中想要获取序列化对象,也可以直接调用此方法。...在试图中可以调用该方法获取详情信息模型类对象。**若详情访问模型类对象不存在,会返回404。...UpdateModelMixin :更新视图扩展类,提供update(request, *args, **kwargs)方法,可以快速实现更新一个存在数据对象。...同时也提供partial_update(request, *args, **kwargs)方法,可以实现局部更新。 成功返回200,序列化器校验数据失败时,返回400错误。

2.1K20
您找到你想要的搜索结果了吗?
是的
没有找到

重点内容回顾-DRF

5.4.3序列化功能 将实例对象转换为字典数据: a.序列化单个对象。 b.序列化多个对象。(其实就是在序列化单个对象基础上多加了一个参数many=True) c.关联对象嵌套序列化。...return attrs 2.数据保存(新增&更新) 在创建序列化对象时候如果只是传入了data参数,那么就会调用create方法进行数据保存;如果还传入了instance对象,那么就会调用update...方法进行数据更新操作。...功能: 1.视图中request对象不再是Django中原始HttpRequest类对象,而是DRF框架封装Request类对象。...Response类对象:传入原始响应数据,会自动根据客户请求头中 Accept将响应数据转换为对应格式进行返回,默认是json,仅支持json和html 3.异常处理:如果视图中抛出了未处理异常

2.4K20

DRF入门

http://127.0.0.1:8000/myapp/api/user/1/ #对于指定数据进行更新,删除,查看操作 DRF序列化序列化与反序列化介绍 在日常开发中,会从别的API获取数据或者自己写...DRF序列化DRF中有一个serializers模块专门负责数据序列化DRF提供方案更先进、更高级别的序列化方案。...DRF序列化器: 序列化器参数 序列化器工作流程: 序列化(读数据:视图里通过ORM从数据库获取数据查询集对象 -> 数据传入序列化器-> 序列化器将数据进行序列化 -> 调用序列化.data...获取数据 -> 响应返回前端 反序列化(写数据):视图获取前端提交数据 -> 数据传入序列化器 -> 调用序列化.is_valid方法进行效验 -> 调用序列化.save()方法保存数据 序列化器常用方法与属性...serializer.errors:获取反序列化器验证错误信息 serializer.data:获取序列化返回数据 serializer.save():将验证通过数据保存到数据库(ORM操作)

1.6K50

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

django-haystack 默认返回搜索结果是一个类似于 django QuerySet 对象,需要配合模板系统使用,因为未被序列化,所以无法直接用于 django-rest-framework...现在万事具备了,数据库中已经有了文章,搜索服务已经有了文章索引,只需要等待客户端来进行查询,然后返回结果。...自定义序列化字段其实非常简单,基本流程分两步走: 从 drf 官方提供序列化字段中找一个数据类型最为接近作为父类。 重写 to_representation 方法,加入自己序列化逻辑。...对象,这个对象就是视图中 HTTP 请求对象,但是因为 django 中 request 对象无法像 flask 那样从全局获取,因此 drf 在视图中将其保存在了序列化器和序列化字段 context...summary 是我们新增字段,注意我们序列化对象是文章 Post,但这个对象是没有 summary 这个属性,但是 summary 其实是对属性 body 序列化结果,因此我们通过指定序列化化字段

1.6K20

DRF框架(三)—— 响应模块(Response)、三大序列化组件介绍、Serializer组件(序列化与反序列化使用)

# 一般情况下只需要返回数据,status和headers都有默认值 return Response(data={数据}, status=status.HTTP_200_OK, headers={设置响应头...}) 序列化组件(下面都是讲关于Serializer) 1.使用序列化时候一定要注意,序列化器声明了以后,不会自动执行,需要我们在视图中进行调用才可以 2.序列化器无法直接接收数据,需要我们在视图中创建序列化对象时把使用数据传递过来...(data,instance传参) 序列化是:数据对象数据库中查出,通过instance传入序列化器中,必须通过data属性才能将序列化数据传给前端,不能直接传序列化对象序列化是:数据是通过...request.data从前端获取到数据,通过data传入序列化器中进行校验,保存到数据库中 3.序列化字段声明类似于我们前面使用过表单系统 4.开发restful api时,序列化器会帮我们把模型数据转换成字典...5.drf提供视图会帮我们把字典转换成json,或者把客户端发过来数据转换成字典

49410

DRF框架学习(四)

使用场景: 重写 get_serializer_class和get_queryset,根据不同操作返回不同序列化器类和不同查询集。...== 'latest': # 返回latest操作对应序列化器类 else: # 返回其他操作对应序列化器类 def get_queryset(self)...DefaultRouter创建对象,在访问url地址时候,我们都可以在后面加一个 .json,那么后台会给我们返回json格式数据。...配合权限,如果认证失败会有两种可能返回值: 401 Unauthorized 未认证 403 Permission Denied 权限被禁止 5.权限 权限控制可以限制用户对于视图访问和对于具体数据对象访问...(self, request, view, obj): """判断对使用此权限类视图某个数据对象是否有访问权限""" # 需求: 对id为1,3数据对象有访问权限,其他对象没有访问权限

2.7K40

django和drf_类中方法可以序列化

', 'drf_app' 5.在命令行输入以下命令,将orm对象映射到数据库 python manage makemigrations python manage migrate 6.写序列化类一般我们都在...app项目中新建serializers.py文件,接下来可以正式编写序列化类了 序列化类编写 # Serializer构造函数参数: # 1. instance:需要传递一个orm对象,或者是一个...Student.objects.create(**validated_data) def update(self, instance, validated_data): """ 根据提供验证过数据更新返回一个已经存在...write_only:当为True时表示这个字段只能写,只有在新增数据或者更新数据时候会用到。...,成功地将数据数据通过json格式返回给了前台 POST请求 同样打开接口工具,输入127.0.0.1:8000/drf/student/,在body中选择json格式,输入如下数据 {

1.1K30

DRF框架学习(三)

DRF框架学习(三) 1.视图 1.1作用 1.控制序列化执行(数据检验、数据保存、转换数据序列化操作)) 2.控制数据查询操作。...功能: 1.视图中request对象不再是Django中 HttpRequest类对象,而是由DRF框架封装成 Request类对象。...2.响应时可以统一返回Response类对象 3.异常处理:如果视图中抛出了未处理异常,DRF框架会自动对异常进行处理,并且会把处理之后错误信息返回给客户端。...,提供 update(request,*args,**kwargs)方法,可以快速实现更新一个存在数据对象。...同时也提供 partial_update(request,*args,**kwargs)方法,可以实现局部更新。 成功返回200,序列化器校验数据失败时,返回400错误。

1.1K20

DRF框架学习(二)

: 1)根据pk获取指定图书对象 2)获取参数(btitle,bpub_date)并进行校验 3)修改指定图书数据更新数据表 4)返回修改图书json数据,状态码:200 3、删除指定图书信息...2.2RestAPI接口核心工作: 把数据数据序列化为前端所需要格式,并返回。 把前端发送数据序列化为模型类对象,并保存到数据库中。...django路由列表中 4.Serializer序列化器 作用:进行数据序列化和反序列化 序列化:把对象转换为字典 反序列化数据校验;数据保存(可以利用这一点实现新增和更新); 4.1使用 定义一个序列化器类...不重要 4.3创建Serializer对象 定义好Serializer类,就可以创建Serializer对象了。...更新: 1.获取id为1图书 2.创建序列化对象,要将更新数据,传入对象 3.调用is_valid方法进行数据校验。

4.1K30

Python进阶39-drf框架(一)

响应数据:后台与数据库交互数据反馈给前台 """ RESTful接口规范 ---- 什么是RESTful 1.REST与技术无关,代表是一种软件架构风格,REST是Representational...(客户端提供改变完整资源) PATCH :在服务器更新资源(客户端提供改变属性) DELETE :从服务器删除资源 过滤,通过在url上传参形式传递搜索条件 https://api.example.com...API key" } 返回结果,针对不同操作,服务器向用户返回结果应该符合以下规范 GET /collection:返回资源对象列表(数组) GET /collection/resource:返回单个资源对象...POST /collection:返回新生成资源对象 PUT /collection/resource:返回完整资源对象 PATCH /collection/resource:返回完整资源对象..._request就是原生request # 2) 原生request对象属性和方法都可以被drfrequest对象直接访问(兼容) # 3) drf请求所有url拼接参数均被解析到query_params

4K30

Django REST Framework-什么是视图(一)

DRF视图可以是函数视图或基于类视图。函数视图类似于Django中函数视图,它接收一个request对象返回一个响应。...基于类视图是DRF主要视图类型,它继承自DRF提供基类,并提供了一些常见功能,例如身份验证,权限控制和序列化使用。...在perform_create()方法中,我们保存了反序列化数据。在DRF中,还有许多其他视图类型可用。...以下是一些常用视图类型:ListAPIView:提供一个只读列表视图,显示一个查询集序列化结果。RetrieveAPIView:提供一个只读详情视图,显示一个对象序列化结果。...CreateAPIView:提供一个创建视图,用于创建新对象。UpdateAPIView:提供一个更新视图,用于更新现有对象。DestroyAPIView:提供一个删除视图,用于删除一个对象

41331

DRF学习笔记(一)

(), many=True) 接下来使用 DRF 给我们封装好 Response 对象进行数据返回即可 from rest_framework.response import Response 这样我们就能够开始使用...DRF 提供序列化器对我们之前编写 views 代码进行改造了 # 三、Request 对象解析 当我们视图层继承了 DRF 给我们提供 View 时,DRF会给我们编写视图函数传递一个...request对象,该对象是对 Django 原生 request对象封装,同时对获取 request对象数据进行了简化,使其更加方便配合序列化器使用。...# 1、.data 属性 request.data 返回请求体解析内容。...这类似于标准 request.POST 和 request.FILES 属性,但是该对象包含有独有的特性: 它包含了所有解析内容,包括文件类型和非文件类型输入 它支持除了POST类型以外其他HTTP

62010

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

事实上,我们在上一部教程 HelloDjango - Django博客教程(第二版) 页面侧边栏:使用自定义模板标签 已经讲解了如何获取归档日期列表,只是当时返回归档日期列表直接用于模板渲染,而这里我们需要将归档日期列表序列化通过...之前序列化字段都是在序列化器(Serializer)里面使用,因为通常来说接口需要序列化一个对象多个字段。...用法也很简单,实例化序列化字段,调用其 to_representation 方法,将需要序列化值传入即可(其实序列化器在序列对象多个字段时,内部也是分别调用对应序列化字段 to_representation...我们通过列表推导式生成一个序列化归档日期列表,这个列表是可被序列化。...接着我们在接口返回一个 Response, Response 将序列化结果包装返回(保存在 data 属性中),django-rest-framework 会进一步帮我们把这个 Response 中包含数据解析为合适格式

2.6K30

美多商城项目(五)

使用drf-extensions提供扩展类 drf-extensions扩展对于缓存提供了三个扩展类: ListCacheResponseMixin 用于缓存返回列表数据视图,与ListModelMixin...数据库有用户地址表,我们就可以将用户地址保存到数据库了。 数据表格一般都是DBA进行设计,我们不需要深入了解,所以此处不做过多阐述。...3.修改指定地址标题并更新数据库。 4.返回应答,设置标题成功。 4.商品部分 4.1商品部分用户表设计 使用工具『StarUML』 首页广告数据表结构: ? 商品数据表结构: ?...总结回顾 1.视图集对象action属性使用场景 重写getserializerclass和get_queryset,根据不同action操作,返回不同序列化器和不同查询集。...上面的代码在创建序列化对象时候,会向序列化对象context属性中补充request参数。 4.商品数据存储 商品存储数据表设计。 SPU:属性值,特性相同商品统称。

1.2K30

【愚公系列】2022年04月 Python教学课程 69-DRF框架之五个扩展类视图子类视图

1.封装序列化常用方法 2.序列化定义 3.视图定义使用序列化器 总结 ---- 一、DRF框架之五个扩展类视图子类视图 常用子类视图 1.CreateAPIView 提供 post 方法...指定序列化器 serializer_class = BookSerializer 三、序列化器进一步封装使用 1.封装序列化常用方法 # 源代码封装基本序列化器 class BaseSerialzier...ser.is_valid() # 3、保存数据 ser.save() # 4、返回结果 return ser.data request...框架五个扩展类视图子类视图,是为了更便于crud封装减少通用逻辑代码量,也是DRF简化版本,其实下面还有视图集可以进一步简化代码,等下一节介绍了。...相关DRF框架API介绍: 获取列表资源list(request) 新建单一资源self.create(request) 获取单一资源self.retrieve(request, pk) 全更新单一资源

29120

测试开发你不得不学 REST API 开发

环境准备 构建一个虚拟环境,并安装好相关依赖: 创建一个Django项目及APP: 编辑配置文件setting.py: 创建一个Django项目及APP: 更新数据库: 模型与序列化 在准备好环境之后...首先是模型层,在apiTest/model.py 创建一个Project 类来存储项目信息: Django REST framework框架与Django框架最核心区别就是:序列化器,DRF提供了定义序列化器...序列化作用: 对数据进行转换 序列化对象转为json)和反序列化(json转为对象); 进行数据校验 判断用户发送数据是否合法。...在apiTest/serializers.py 中添加关于Project 对象序列化代码: 视图 DFR 提供了 请求对象(Request objects)和 响应对象(Response objects...)来提供更加灵活请求解析和使用内容协商来确定返回给客户端正确内容类型。

1.1K10
领券