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

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

前言 使用视图集ViewSet,可以将一系列逻辑相关动作放到一个类: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update() 保存数据...ViewSet,没有提供任何动作action方法,需要我们自己实现action方法。...、destory等方法都需要自己编写,而这些方法与前面讲过Mixin扩展类提供方法同名,所以我们可以通过继承Mixin扩展类来复用这些方法而无需自己编写。..."""经过上面的处理,我们就已经把所有视图方法写在一个类中了,但是继承类有点多 所以,drf里面提供了模型视图集[ModelViewSet],可以一次性提供5个api接口方法 最后,def还提供了只读模型视图集...[ReadOnlyModelViewSet],可以提供获取多条数据一条数据视图方法 """ from rest_framework.viewsets import ModelViewSet,ReadOnlyModelViewSet

1.6K30

drf之请求、响应、视图

如果前端请求未进行Accept声明,则会采用默认方式处理响应数据,我们可以通过配置修改默认响应格式。 可以rest_framework.settings 查找所有的drf默认配置项。...APIView与View不同之处在于: 传入到视图方法REST frameworkRequest对象,而不是DjangoHttpRequeset对象; 视图方法可以返回REST framework...APIView仍以常规类视图定义方法实现get() 、post() 或者其他请求方式方法。例如使用APIView简单实现五个增删查改API接口。...,那么可以通过条件判断get_serializer_class方法通过返回不同序列化器类名就可以让视图方法执行不同序列化器对象了。...试图中可以调用该方法获取详情信息模型对象。**若详情访问模型对象不存在,会返回404。

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

DRF 视图组件

,上篇使用APIView是比较偏Base,视图使用更加简化了代码,这里介绍一下其他视图用法 Django REST framwork 提供视图主要作用: 控制序列化器执行(检验、保存、...ViewSet,没有提供任何动作action方法,需要我们自己实现action方法。...= 'pk' lookup_url_kwarg = None get_queryset()方法可以重写,如果我们需要在一个视图类内操作另外表模型指定序列化数据 class BookViewDetail...As_view ({'get': 'list', 'post': 'create'}) 总结 补充 视图集中定义附加action动作 视图集中,除了上述默认方法动作外,还可以添加自定义动作。...属性 视图集中,我们可以通过action对象属性获取当前请求视图集时action动作是哪个。

89110

Django DRF路由与扩展功能实现

(serializer.data) """ 使用GenericViewSet时,虽然已经提供了基本调用数据集(queryset)序列化器属性,但是我们要编写一些基本 API时,还是需要调用DRF提供模型扩展类...权限Permissions 权限控制可以限制用户对于视图访问对于具体数据对象访问。...执行视图dispatch()方法前,会先进行视图访问权限判断 通过get_object()获取具体对象时,会进行模型对象访问权限判断 内置提供权限: AllowAny 允许所有用户 IsAuthenticated...可以配置文件全局设置默认权限管理类,如: REST_FRAMEWORK = { .......可以配置文件使用DEFAULT_THROTTLE_CLASSES DEFAULT_THROTTLE_RATES进行全局配置 REST_FRAMEWORK = { # 限流 'DEFAULT_THROTTLE_CLASSES

3K30

Django REST Framework-常用类视图

例如,如果您想要编写一个视图来处理一个模型列表,并支持GETPOSTDELETE请求,您可以使用GenericAPIView,如下所示:from rest_framework.generics import...视图中,我们指定了要使用查询集序列化器,并使用list,createdestroy方法处理GETPOSTDELETE请求。...例如,如果您想要编写一个视图来处理一个资源列表,并支持GETPOST请求,您可以使用ViewSet,如下所示:from rest_framework import viewsetsfrom rest_framework.response...我们使用listcreate方法处理GETPOST请求,并使用Response对象返回响应。...总结在Django REST Framework,类视图是一种方便方式编写Web API视图,并带有许多有用内置功能。

65830

不会DRF?源码都分析透了确定不来看?

(view) 我们发现返回值是csrf_exempt(view)局部不验证,Django总结到了不懂可以看一下:CSRF 跨站请求伪造 快速使用DRF写出接口 序列化反序列化 API接口开发,最核心最常见一个过程就是序列化...:把别人提供数据转换成我们所需格式 最常见比如我们使用json模块对数据进行处理···· Djangorestframework序列化反序列化又是如何?...序列化: Django获取到数据默认是模型对象(QuerySet对象),但是模型对象数据无法直接提供给前端或别的平台使用,我们需要把数据进行序列化,变成字符串或json数据提供给前端或其他平台;...(requets),加括号调用,并且传入了当次请求request对象 3、然后又返回了当前对象dispatch方法,自己名称空间内没有,那么去找,然后发现类(View)dispatch...import QueryDict 注意:如果前端提交过来多个同名数据也就是form表单input标签name属性设置了多个重名数据就不能使用request.POST.get('user')获取了

1.3K10

DRF系列总结二:脚手架搭建

Django基础工程基础上,安装DRF并进行配置:比如统一接口返回格式、统一异常处理等,并在后面的文章,不断完善出一套DRF脚手架,以降低后面的开发同学趟坑成本。...,我们可以通过配置方式对外快速提供Django模型查询接口,且接口参数格式类似DjangoORM语法,比如: class RemoteSystem(Model): """...对于需要对外提供Django模型CRUD接口项目来说,真是个好东西,简单配置一下,接口就都有了。...,增加了pagetotal_page字段,代表当前页总页数,并修改了返回数据字段为items,这样可以统一接口分页格式,满足前端第三方系统对接口后台分页绝大部分需求场景。...,通过阅读代码和文档,我们发现ModelViewSet类APIViewfinalize_response函数恰好是DRF定义response统一处理接口,于是我们可以重写ModelViewSet

3.6K60

django写接口(实战篇)

1.设置全局分页参数 我们可以 project 下 settings.py 文件中加入 REST_FRAMEWORK 字典,设置全局分页参数 REST_FRAMEWORK = { # 配置全局分页类型每页数量...接口分页效果 我们可以看到接口返回信息还包含了前一页后一页 url 是不是很人性化 接口数据多条件筛选 目前我们接口要查找特定信息只能通过 id 查找,这肯定是不够完善,这部分将设置接口多条件查询...首先我们需要安装过滤器模块 pip install django-filter 然后我们需要将过滤器模块到 settings.py INSTALLED_APPS 进行注册才可以使用。...字段,author 我们使用 django 自带 User 类, # 我们通过 ForeignKey 进行关联两个 Model,related_name 为反向引用, # 即我们...User 表内可以通过 related_name 引用 post 对象 author = models.ForeignKey(User, related_name='posts', on_delete

2K20

Django_rest框架实践项目(一)入门helloWord项目的创建和代码解释

,并且连接数据库,现在是连接mysql数据库,将app映射到数据库里面 不需要将这个新创建app注册到setting里面,这个django项目不一样,但是要注册 ‘rest_framework’,...1 应该映射用户model,但是django已经将自带映射好了。所以,用户表model就不需要自己建设这个模型了。...UserViewSet也是命名规范,记住就可以ModelViewSet类 ViewSet是 视图集合 class UserViewSet(viewsets.ModelViewSet): “...就是表明这个里面使用哪一个序列系类,后面的值就是 我们serializers.py里面自己定义类 serializer_class = UserSerializer class GroupViewSet...所以路由里面一定到创建rest对象并且进行引用。 以上操作之后,浏览器输入之后,我们就会看见这样页面 ?

1.2K20

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

因为项目中使用REST API,所以对REST架构风格做了一些研究。如果有对REST架构风格还不了解,或者一知半解朋友,可以读读另一篇文章《那些年,我们一起误解过REST》。...一开始项目中使用是OpenResty实现REST API,但使用起来一直觉得不方便。主要是因为Lua没有ORM,也没有REST架构风格框架。...2.2 连通性 GET /请求响应,包含了user资源对应group资源URI。 GET /users请求响应,也包含了groups资源,只是因为当前没有group资源,所以是空数组。...反应到页面上,GET /users资源时,页面可以提供如下页面创建一个新user资源,而这一切都是因为约定了POST是创建操作,资源描述通过body传递,资源ID由服务器自动生成,新生成资源URI...[image.png] 2.4 资源表述 《那些年,我们一起误解过REST》文中提到过,同一个资源可以有多个不同表述,每个表述需要是自描述

4.1K582

django-rest-framewor

定义需要返回字段(字段类型可以与model类型不一致,参数也可以调整),字段名称必须与model一致 GET接口逻辑,获取QuerySet 开始序列化:将QuerySet作业第一个参数传给序列化类...定义:需要为post新增url,因为根据规范,url定位资源,http请求方式定义用户行为 定义post方法:视图类定义post方法 开始序列化:通过我们上面定义序列化类,创建一个序列化对象,传入参数...retrieve,有一行instance = self.get_object(), 该方法GenericAPIView 至关重要是拿到self.kwargspk关键字,然后从queryset拿到想要数据...返回结果 5 认证组件   cookiesession两种方式可以保存用户信息,这两种方式不同是cookie保存在客户端浏览器,而session保存在服务器,他们各有优缺点,配合起来使用,可将重要敏感信息存储...session,而在cookie可以存储不太敏感数据。

1.5K10

DjangoRestFramework,认证组件、权限组件、频率组件、url注册器、响应器、分页组件

(request, *args, **kwargs),那么认证、权限、频率这三个默认组件都在这个方法里面了,如果我们自己没有做这三个组件配置,那么会使用源码默认一些配置。..."chao","asdfasdfasdf" class BookView(APIView): #认证组件肯定是getpost等方法执行之前执行,还记得源码地方,这个组件是dispatch..._request,所以上面的取值方式是没有问题,不过人家APIView不仅封装了老request对象,并且还给你加了query_params属性,request.GET得到内容是一样,所以可以直接按照下面的方式来写...文件配置:如果再app01文件夹下service文件夹下auth文件夹下写了我们自己认证类,那么全局配置写法就按照下面的方式写。...,但是一般不用它,因为不同数据展示可能每页展示数量是不同 } 如果我们不想用全局page_size配置,我们自己可以写个类继承分页类组件,重写里面的属性: #引入分页 from rest_framework.pagination

56820

DjangoRESTframework(补充)

验证失败,可以通过序列化器对象 errors 属性获取错误信息,返回一个字典, 包含字段字段错误,若是非字段错误,可以通过修改 REST framework 配置 NON_FIElD_ERRORS_KEY... request.POST 包含了解析之后文件非文件数据 包含了对POST、PUT、PATCH请求方式解析后数据 利用了REST frameworkparsers解析器,不仅支持表单类型数据...APIView与View不同之处在于: 传入到视图方法REST frameworkRequest对象,而不是DjangoHttpRequeset对象; 视图方法可以返回REST framework...APIView仍以常规类视图定义方法实现get() 、post() 或者其他请求方式方法。...注意,提供序列化器对象时候,REST framework会向对象context属性补充三个数据:request、format、view,这三个数据对象可以定义序列化器时使用

2.2K30

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

通过GET/ POST/ PUT/ DELETE获取/新建/更新/删除资源。一般使用JSON格式返回数据。大多数web框架都有相应插件支持RESTful API。...两者都是数据转换格式,比如我们django获取到数据默认是模型对象,但是模型对象数据无法直接提供给前端或别的平台使用,所以需要把数据进行序列化,变成字符串或者json数据,提供给别人,这是序列化。...Django Rest framework Django REST framework是一个内置django里面的子应用,可以快速开发REST API接口应用。...'rest_framework', ] 项目中如果使用rest_framework框架实现API接口,主要有以下三个步骤: 将请求数据(如JSON格式)转换为模型对象 通过模型对象进行数据库操作...Api List可以查看所有学生信息,也可以进行增删查改(POST/DELETE/GET/PUT) 也可以通过携带用户idurl访问单个用户 http://127.0.0.1:8000/students

2.3K10

Django Rest Framework

函数基础视图(@api_view()) 一种函数基础视图装饰django普通视图,我们同样可以使用request来接受请求和response响应。...REST框架提供通用视图允许快速构建API观点紧密地映射到数据库模型,如果通用视图不适合需要API, 可以使用常规APIView类,或重用mixin基类使用通用视图组成自己组可重用通用视图。...通用视图可以设置一些类属性通用视图内,也可以根据特殊要写重写它内部视图方法 使用.as_views()转换成视图函数 url(r’^/users/’, ListCreateAPIView.as_view...1)属性 基本属性: queryset: 用于返回query对象集合,也可以使用get_queryset()方法。...ViewSet同样不提供具体行为方法实现,可以重写定义一些请求处理方法。 而代替了原来APIVIewPOSTGET等方法,取而代之是list,create等方法。

2.2K60

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

Web开发,RESTful API是一种遵循REST原则API设计风格,它使用HTTP协议进行通信,通过GETPOST、PUT、DELETE等HTTP方法实现对资源操作。...代码解析models.py定义了一个简单用户模型,其中包含了用户姓名邮箱。serializers.py定义了一个序列化器,用于将用户模型序列化成JSON格式。...Django REST框架允许我们使用异步视图性能优化技术提高应用程序性能可扩展性。异步视图处理I/O密集型任务时,使用异步视图可以提高性能并发能力。...定制化API响应通过使用DRF(Django REST Framework)提供Response对象,我们可以定制化API响应数据格式内容。...首先,我们学习了如何使用Django REST框架创建简单API端点,包括定义模型、序列化器、视图集以及路由配置等。

31520

教你 10 分钟构建一套 RESTful API 服务( 下 )

Restless 依赖插件增强使用场景 但是,有些小伙伴希望能写一下 Django 实现 RESTful API 实现过程 因此本篇将介绍 Django 搭建 RESTful API 流程...为了简化过程,使用命令行连接本地 Mysql 数据库 ,并新建一个名为 rest 数据库 然后,项目的设置文件 settings.py ,指定默认数据库连接信息 # api/api/settings.py...实现 具体步骤如下: 第 1 步,编写模型,并映射数据库 新建一个类,继承自 django.db.models Model 对象,新增几个字段,指定数据类型默认值 # api/restfulapi...第 2 步,序列化模型 使用 djangorestframework 提供序列化器 ModelSerializer,将上面定义好模型转换为其他数据格式,比如:JSON 需要注意是,这里可以序列化所有字段...() 方法即可 当然,这里也可以使用 django_filters 来过滤数据,完成一些复杂查询场景 # api/restfulapi/views.py from rest_framework import

1.5K40
领券