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

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

前言 使用视图集ViewSet,可以将一系列逻辑相关动作放到一个类: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update() 保存数据...视图集只使用as_view()方法时候,才会将action动作与具体请求方式对应上。...ViewSet,没有提供任何动作action方法,需要我们自己实现action方法。...,还提供了GenericAPIView提供基础方法,可以直接搭配Mixin扩展类使用。..."""经过上面的处理,我们就已经把所有视图方法写在一个类中了,但是继承父类有点多 所以,drf里面提供了模型视图集[ModelViewSet],可以一次性提供5个api接口方法 最后,def还提供了只读模型视图

1.6K30

DRF进阶之DRF视图和常用功能

DRF视图和常用功能 DRF视图 DRF视图类介绍 DRF框架中提供了众多通用视图基类与扩展类,以简化视图编写。...View:Django默认视图基类,负责将视图连接到URL,HTTP请求方法基本调度,之前写类视图一般都用这个。...APIView:DRF提供所有视图基类,继承View并扩展,具备了身份认证、权限检查、流量控制等功能。...,传递python对象 status:状态码,默认200 template_name:模板名称 headers:用于响应头信息字典 content_type:响应数据类型 使用方法: return...已经完成了许多功能,但会有一个问题,获取所有用户列表和单个用户需要分别定义两个视图URL路由,使用ViewSet可以很好解决这个问题,并且实现了路由自动映射。

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

django写接口(实战篇)

视图及模版》 《django入门:Admin管理系统及表单》 《django入门:通用视图类重构视图》 《用django写接口(入门篇)》 《用django写接口(优化篇)》 正文 上一部分我们通过基本类重构了...接口分页效果 我们可以看到接口返回信息还包含了前一页和后一页 url 是不是很人性化 接口数据多条件筛选 目前我们接口要查找特定信息只能通过 id 来查找,这肯定是不够完善,这部分将设置接口多条件查询...首先我们需要安装过滤器模块 pip install django-filter 然后我们需要将过滤器模块到 settings.py INSTALLED_APPS 进行注册才可以使用。...字段,author 我们使用 django 自带 User 类, # 我们通过 ForeignKey 进行关联两个 Model,related_name 为反向引用, # 即我们...然后我们会得到一个 json 数据 {"detail": "身份认证信息未提供。"} 显然被拒绝访问了,同样我们操作 DELETE 等操作也是一样 ?

2K20

Django REST 框架详解 06 | 视图家族 Generics 与 Viewsets

视图集 1.简单使用 查看源码 代码实现 2.ModelViewSet:最全封装类 查看源码 代码实现 接口测试 群查 单查 单删 单增 总结 GenericAPIView 与 APIView...工具视图都是 GenericAPIView 子类,不同子类继承不同工具类,重写请求方法。 ?...二、Viewsets:视图集 1.简单使用 DRF 提供了 Viewsets.py 视图集,再次封装之前操作。...发现没有提供实际方法 class GenericViewSet(ViewSetMixin, generics.GenericAPIView): """ The GenericViewSet...比如,POST请求标准 Model 类操作用于新增接口,但以下案例并不符合这个标准。 案例 1: 请求手机验证码,发送 POST 请求,不需要 Model 类参与。

1.1K20

django-rest-framewor

2 解析器组件 (用来解析数据请求组件)   Django并不能处理请求协议为application/json编码协议数据   注意: DRF解析器会封装到Viewparsers内,视图函数被调用时...定义:需要为post新增url,因为根据规范,url定位资源,http请求方式定义用户行为 定义post方法视图定义post方法 开始序列化:通过我们上面定义序列化类,创建一个序列化对象,传入参数...Django程序启动,开始初始化,获取配置信息,获取视图类并加载到内存,获取url视图对应关系 开始绑定视图类和url对应关系,执行as_view()方法 as_view()方法被执行时候传递了参数...self = cls(**initkwargs), cls是视图类,执行视图函数self就指向视图函数实例对象 等待客户端请求 请求到来,开始执行视图函数,注意,调用视图函数方式是view(request...返回结果 5 认证组件   cookie和session两种方式可以保存用户信息,这两种方式不同是cookie保存在客户端浏览器,而session保存在服务器,他们各有优缺点,配合起来使用,可将重要敏感信息存储

1.5K10

DRF 视图组件

action属性 DRF 视图组件 DRF框架提供了很多通用视图基类与扩展类,上篇使用APIView是比较偏Base视图使用更加简化了代码,这里介绍一下其他视图用法 Django...REST framwork 提供视图主要作用: 控制序列化器执行(检验、保存、转换数据) 控制数据库查询执行 先来看看这其中的人情世故:两个视图基本类,五个扩展类,九个视图子类,视图方法视图集...ViewSet,没有提供任何动作action方法,需要我们自己实现action方法。...GenericViewSet:使用ViewSet通常并不方便,因为list、retrieve、create、update、destory等方法都需要自己编写,而这些方法与前面讲过Mixin扩展类提供方法同名...,还提供了GenericAPIView提供基础方法,可以直接搭配Mixin扩展类使用

89110

drf之请求、响应、视图

APIView与View不同之处在于: 传入到视图方法是REST frameworkRequest对象,而不是DjangoHttpRequeset对象; 视图方法可以返回REST framework...APIView仍以常规视图定义方法来实现get() 、post() 或者其他请求方式方法。例如使用APIView简单实现五个增删查改API接口。...提供关于序列化器使用属性与方法 属性:serializer_class  指明视图使用序列化器 方法: get_serializer_class(self) : 当出现一个视图调用多个序列化器...注意: 该方法提供序列化器对象时候,会向序列化器对象context属性补充三个数据:request、format、view,这三个数据对象可以定义序列化器使用。...(self) :返回详情视图所需模型类数据对象,主要用来提供给Mixin扩展类使用

2.1K20

跟着官方文档学Python——Django Rest framework

开发Web应用,有两种应用模式: 前后端不分离[客户端看到内容和所有界面效果都是由服务端提供出来。] 2....例如:我们经常使用淘宝商城就有很多客户端,Web, iOS 和 Android端,但是当我们 Web 端搜索商品得到结果和在 iOS 和 Android 端得到结果却是一样。...两者都是数据转换格式,比如我们django获取到数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以需要把数据进行序列化,变成字符串或者json数据,提供给别人,这是序列化。...# 验证数据方法[反序列化:接收客户端数据] # 操作数据带密码[反序列化:保存数据(添加/更新)] 编写视图views.py from django.shortcuts import...Api List可以查看所有学生信息,也可以进行增删查改(POST/DELETE/GET/PUT) 也可以通过携带用户idurl访问单个用户 http://127.0.0.1:8000/students

2.3K10

Django REST Framework-什么是路由

Web应用程序,路由是用于决定如何处理传入请求机制。DRF,路由作用是将特定URL与处理该URL请求视图函数相匹配。DRF路由系统是基于DjangoURL路由系统构建。...这两个路由器都提供了方便方法来将URL映射到视图函数上,但是它们之间存在一些差异,我们将在下面的章节对它们进行更详细解释。...接下来,我们使用register()方法向路由器中注册视图类,这将为每个视图类生成URL模式。最后,我们将路由器URL模式包括Djangourlpatterns。...接下来,我们使用register()方法向路由器中注册视图类,这将为每个视图类生成URL模式。最后,我们将路由器URL模式包括Djangourlpatterns。...路由配置无论使用哪种路由器,我们都需要将路由器URL模式包括Djangourlpatterns。此外,我们还需要为每个视图提供一个URL模式。

43311

Python进阶41-drf框架(三)

---- 视图类传递参数给序列化类 ---- 介绍 # 1)视图实例化序列化对象,可以设置context内容 # 2)序列化类局部钩子、全局钩子、create、update方法,都可以用...self.context访问视图类传递过来内容 # 需求: # 1) 视图,可以通过request得到登陆用户request.user # 2) 序列化类,要完成数据库数据校验与入库操作...,可能会需要知道当前登陆用户,但序列化类无法访问request # 3) 视图实例化序列化对象,将request对象传递进去 ---- 视图层 class Book(APIView):...,需要GenericAPIView类提供几个类属性和方法(见上方GenericAPIView基类知识点) # 3)工具类工具方法返回值都是Response类型对象,如果要格式化数据格式再返回给前台,...(GenericAPIView或APIView) # GenericViewSet、ViewSet # 2)ViewSetMixin提供了重写as_view()方法,继承视图视图类,配置路由时调用

45420

django优雅实现软删除,支持Admin和DRF软删除

需要解决问题 DRF 暴露DELETE方法一旦被执行,就需要操作软删除,把is_deleted字段设置为True。...简而言之: drf找不到删除数据,admin需要全部数据 drf和admin删除数据都是软删除 解决方案 DRF Django Manager 赋予了 Django模型(Model)操作数据库能力...其实你项目中无时不刻不在使用Manager,还记得objects吗?也就是如:Book.objects.all()objects。有没有想过它到底是什么?...使用DRF操作删除实际上调用是mixins.DestroyModelMixindestroy方法,具体执行删除方法是perform_destroy。...由于我们已经模型层通过Manager直接改变了最初数据过滤后样子,这里怎么重写也是无事于补。 于是我在想,那就在定义一个模型管理器,Admin中使用这个管理器不就好了?

2K40

Django Rest Framework

函数基础视图(@api_view()) 一种函数基础视图来装饰django普通视图,我们同样可以使用request来接受请求和response响应。...1)api_view()使用方法 这个视图使用默认渲染器、解析器、身份验证设置中指定类等。...REST框架提供通用视图允许快速构建API观点紧密地映射到数据库模型,如果通用视图不适合需要API, 可以使用常规APIView类,或重用mixin和基类使用通用视图来组成自己组可重用通用视图。...通用视图可以设置一些类属性通用视图内,也可以根据特殊要写重写它内部视图方法 使用.as_views()来转换成视图函数 url(r’^/users/’, ListCreateAPIView.as_view...5、视图集合ViewSets 允许将一组相关逻辑视图一个类,ViewSet类是一个简单类型基于类观点,没有提供任何方法处理程序如.get()或. post(), 而代替提供方法比如.list(

2.2K60

DjangoRESTframework(补充)

() serializer_class = BookInfoSerializer queryset 指明该视图查询数据使用查询集 serializer_class 指明该视图进行序列化或反序列化时使用序列化器...("图书不是关于Django") return value 2) validate 序列化器需要同时对多个字段进行比较验证,可以定义 validate 方法进行验证 class...APIView仍以常规视图定义方法来实现get() 、post() 或者其他请求方式方法。...filter_backends 过滤控制后端 详情页视图使用 Lookup_field 查询单一数据对象使用条件字段,默认为‘pk’ Look_url_kwarg 查询单一数据 url 参数关键字名称...ViewSet,没有提供任何动作action方法,需要我们自己实现action方法

2.2K30

DRF终极封装ViewSet和Router附教程PDF源码

DRF官方教程学习过程,一个很明显感受是框架在不断地进行封装,我们自己写框架/工具/脚本/平台也可以模仿模仿,先完成底层代码,再做多层封装,让使用者很容易就上手操作。...ViewSets 先看看之前在给User模型创建Endpoint,我们新增2个视图: class UserList(generics.ListAPIView): queryset = User.objects.all...ModelViewSet使用ModelViewSet把SnippetList、SnippetDetail和SnippetHighlight视图合并成一个SnippetViewSet: from rest_framework.decorators...Routers 使用ViewSet一大好处是可以自动配置路由,DRF提供了rest_framework.routers: ?...而且DefaultRouter提供了API根目录Endpoint,我们甚至可以把views.pyapi_root也删了。

81720

Django REST Framework-路由器(一)

DRF,路由器(Router)是一个非常有用工具,可以帮助我们轻松地定义API路由,实现快速、可维护API开发。一、路由器作用在DRF,路由器主要作用是将URL视图函数绑定在一起。...路由器可以根据视图函数名称和参数,自动生成URL,并将请求分发到对应视图函数使用路由器可以避免手动编写URL配置繁琐和容易出错。二、路由器使用安装DRF使用路由器之前,需要先安装DRF。...使用视图集需要先定义一个继承自ModelViewSet或ViewSet类,然后将这个类传递给路由器register方法即可。...由于HelloView继承自APIView,因此需要使用as_view方法将其转换为视图函数。添加路由器到URLconf注册视图函数之后,还需要将路由器添加到DjangoURLconf。...)),]这个例子,我们将路由器URL添加到了Django根URLconf

66641

体验Django REST framework,解读REST架构风格

直到最近在用Django,接触到Django REST framework,深感便利同时,也进一步加深了对REST架构风格理解。...,实现了get、post、put、delete等请求方法对应通用处理方法,直接继承可以极大地简化代码。...id=1,这样代表是从所有的user资源过滤出id=1资源集合,而不是表示id=1具体资源。 资源URIid需要放在URI路径,不能放在请求参数。...反应到页面上,GET /users资源,页面可以提供如下页面来创建一个新user资源,而这一切都是因为约定了POST是创建操作,资源描述通过body传递,资源ID由服务器自动生成,新生成资源URI...[image.png] 同时,因为统一了请求方法,并且Header声明了该资源支持请求方法,所以页面可以针对该资源,提供增删查改一系列操作入口。如下图右上角所示。

4.1K582

Django-DRF】使用md笔记 0基础到高手. 第(4)篇:使用Django-DRF进行开发

开发REST API视图中,虽然每个视图具体操作数据不同,但增、删、改、查实现流程基本套路化,所以这部分代码也是可以复用简化编写: * **增** :校验请求数据 -> 执行反序列化过程 ->...特点 提供了定义序列化器Serializer方法,可以快速根据 Django ORM 或者其它库自动序列化/反序列化; 提供了丰富视图、Mixin扩展类,简化视图编写; 丰富定制层级:函数视图...见识DRF魅力 我们仍以在学习Django框架使用图书英雄为案例,使用Django REST framework快速实现图书REST API。 1....() serializer_class = BookInfoSerializer queryset 指明该视图查询数据使用查询集 serializer_class 指明该视图进行序列化或反序列化时使用序列化器...返回如下页面信息: 3)浏览器输入网址127.0.0.1:8000/books/1/,可以访问 获 取单一图书信息接口(id为1图书),呈现如下页面 4)页面底部表单填写图书信息,可以访问

25630
领券