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

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

APIView:DRF提供所有视图基类,继承View并扩展,具备了身份认证、权限检查、流量控制等功能。...APIView类 APIView:DRF提供所有视图基类,继承View并扩展,具备了身份认证、权限检查、流量控制等功能 创建项目 创建app并加入settings.py E:\workspace\...提供了一个响应类Reponse,响应数据会自动转换符合前端JSON数据格式。...:基于Token认证 RemoteUserAuthentication:基于远程用户认证 DRF支持权限: IsAuthenticated:只有登录用户才能访问所有API AllowAny:允许所有用户...search=%E5%BC%A0%E4%B8%89 分页 分页是数据表格必备功能,可以在前端实现,也可以在后端实现,为了避免响应数据过大,造成前端压力,一般在后端实现。

4.4K10

第 16 篇:别再手动管理接口文档了

完善文档 drf-yasg 毕竟不是使用人工智能开发,即使是使用人工智能,也很难做到 100% 正确,毕竟由人类写代码可能是千变万化,工具无法预料到所有可能情况,一旦它遇到无法处理地方,自动生成文档就可能出错...GET /posts/{id}/comments/ 这个接口应该还支持分页查询参数,但生成文档中没有列出,接口响应参数也是错误,正确应该是一个分页评论列表,但文档中是单个评论对象。...当 detial=True 时,drf-yasg 会将这个 action 对应接口看做获取单个资源接口,因此它认为分页是不需要。但实际上我们对这个接口进行了定制,它返回其实是评论列表。...二是 GET /posts/archive/dates/,这个接口返回内容应该是一个日期列表,但是文档中显示竟然是博客文章列表drf-yasg 推断响应类型是正确,但内容不对。...responses 参数值是一个字典,字典键是 HTTP 响应码,值可以是一个序列化器,这样 drf-yasg 会拿这个序列化器去解析接口响应参数;也可以是一个字符串,drf-yasg 会把字符串直接当做接口响应结果写入文档中

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

安装 Django REST Framework

'rest_framework',]这将允许您使用DRF所有功能。现在您已经安装了DRF,接下来我们将介绍一些基本用法和示例。创建序列化器序列化器是DRF一个核心概念。...我们指定了User模型作为序列化器元数据,并指定了我们想要在JSON中包含字段。创建视图视图是DRF另一个核心概念。它们定义了API行为,即如何响应请求、如何验证输入等。...下面是一个简单视图示例,用于返回所有用户列表:from rest_framework import genericsfrom django.contrib.auth.models import Userfrom...我们指定了我们想要返回所有用户查询集,并指定了用于序列化数据序列化器。创建路由路由是将URL映射到视图一种机制。在DRF中,我们可以使用DjangoURLConf和DRF路由器来定义路由。...DRF有很多其他功能,例如身份验证、权限管理、限速、过滤、分页等等。您可以在DRF官方文档中找到所有这些功能详细信息。

1.5K20

DRF框架学习(四)

DRF框架学习(四) 1.视图集对象action属性 作用: 获取现在要执行是哪一种操作。 self.action:是字符串类型,目的是获取所有执行操作。...False DefaultRouter与 SimpleRouter区别是, DefaultRouter会多附带一个默认API根视图,返回一个包含所有列表视图超链接响应数据。...在执行视图dispatch()方法前,会先进行视图访问权限判断 在通过get_object()获取具体对象时,会进行对象访问权限判断 DRF框架提供了四个权限控制类: AllowAny允许所有用户...DRF框架默认权限控制如下: 'DEFAULT_PERMISSION_CLASSES': ( 'rest_framework.permissions.AllowAny', # 允许所有人 ) 可以在配置文件中设置权限管理类...注意:视图关闭分页 pagination_class = None 10.异常处理(重点) REST framework提供了异常处理,可以出来以下异常: APIException 所有异常父类 ParseError

2.7K40

如何让 Python 写 API 接口同时支持 Session 和 Token 认证?

DRF 支持认证模式 REST framework 提供了许多开箱即用身份认证方案,还允许自定义认证方案。...在 DRF 中使用认证 在 DRF 框架中,可以通过 2 种方式配置认证方式。...认证模式配置接收是一个列表,其实我们可以在里面添加多种认证模式。...例如,在用户列表接口中(/Mrdoc/app_admin/views.py 文件 283 行附近),我们是这样定义接口: # 后台管理 - 用户列表接口 class AdminUserList(APIView...如果浏览器未登录状态下访问接口,会直接响应 403 Forbidden: ? 如果我们在浏览器登录状态下访问接口,会响应成功: ? 如果我们在接口中携带 Token 参数,也会响应成功: ?

2.5K20

Django+Vue开发生鲜电商平台之5.使用DRF实现商品列表页和过滤

modelserializer实现商品序列化 3.GenericView方式实现商品列表页和分页 4.viewsets和router实现商品列表页 5.各种View分析 三、DRF使用 1.DRF...实现商品列表原理是: 通过DRF返回数据,基于CBV(Class-based Views, 即基于类视图)方式编码。...Django中有Form,也有ModelForm,DRF中也有ModelSerializer,相比于Serializer,它省去了模型所有字段添加和处理数据方法实现,serializers.py简化如下...此时已经显示出category具体信息。 3.GenericView方式实现商品列表页和分页 现在进一步使用mixins和GenericView让代码更加简洁。...使用Response类只是为返回内容协商Web API响应提供了一个更好接口,该响应可以呈现为多种格式。 2.DRF过滤器 DRF提供了过滤功能,来实现简单高效过滤。

5.3K20

Django REST Framework 简介

Django REST Framework(以下简称DRF)是基于Django框架一个强大Web API框架。...DRF可以轻松地与Django ORM和其他第三方库集成,这使得构建Web API变得非常简单。在DRF中,序列化器是一个重要概念。...视图是DRF另一个关键概念。视图定义了API行为,即如何响应请求、如何验证输入等。...这些视图可以轻松地处理常见API功能,如CRUD操作、列表视图和分页等。DRF还提供了一组灵活路由器,用于将URL映射到视图。...这些路由器可以轻松地处理基于视图URL配置,使得API维护和扩展变得非常简单。DRF还提供了灵活身份验证(Authentication)和权限(Permission)系统,以确保API安全性。

81820

8.寻光集后台管理系统-用户管理(增删改查)

权限用于授予或拒绝不同类别的用户访问 API 不同部分。 最简单权限样式是允许任何经过身份验证用户访问,而拒绝任何未经身份验证用户访问。 如何确定权限 DRF中权限始终定义为权限列表。...在运行视图主体之前,检查列表每个权限。...,会忽略设置文件中配置权限类列表。...REST framework已经实现了分页api。它支持: 将分页链接作为响应内容一部分,这是默认方案。 响应头中包含分页链接,如Content-Range或Link。...注意只有在使用通用视图或视图集时,分页才会自动执行。如果你使用一个常规APIView,你需要自己调用分页API来确保你返回一个分页响应

1.8K30

Flask框架在Python面试中应用与实战

在Python面试中,对DRF理解与实际应用能力是衡量候选人Web服务开发能力重要指标。本篇博客将深入浅出地探讨DRF面试中常见问题、易错点以及应对策略,并结合实例代码进行讲解。...分页、过滤与排序分页(Pagination):解释如何启用分页,选择合适分页类(如PageNumberPagination、LimitOffsetPagination),并设置分页参数。...响应与错误处理渲染器(Renderers):列举常用渲染器(JSONRenderer、BrowsableAPIRenderer),并说明如何根据客户端请求选择合适响应格式。...异常处理:介绍如何使用DRF异常体系(如PermissionDenied、NotAuthenticated、ValidationError等)处理错误情况,并自定义异常响应。...:在项目中统一响应格式,包括状态码、数据结构、错误消息等,遵循RESTful原则,提升API易用性和一致性。

10510

django rest_framework 分页

简介 本文主要介绍在drf框架中如何对查询数据进行分页,在drf框架中有提供该基础功能使用案例和文档,详情参考drf-pagination-官网文档 (opens new window) 内置分页方式...drf框架中默认提供几种分页方式,并封装成了模块提供给开发者调用,主要是以下几种: PageNumberPagination,主要是提供page​和page_size​进行分页。...自定义分页响应数据 在内置分页类PageNumberPagination​中响应数据格式如下: { "count": 总数, "next": 下一页链接, "previous...get_paginated_response​方法需要对响应数据进行裁剪。...,在REST_FRAMEWORK​中设置DEFAULT_PAGINATION_CLASS​,该key是指定分页模式使用哪个分页类,而这里使用drf框架中内置分页类LimitOffsetPagination

58610

重点内容回顾-DRF

所有的精力放在你主要事情上,对于一些琐事、一些惹恼小人,一些阻碍你前进事物,不妨看淡一点,暂时妥协并不是向他们低头,而是跟本没把他们放在心上。...,a代表是all(即全部三者:u(user该文件所有者)、g(group该文件所有者所在用户组)、o(other表示其他用户)),x代表是执行权限。...Response类对象:传入原始响应数据,会自动根据客户请求头中 Accept将响应数据转换为对应格式进行返回,默认是json,仅支持json和html 3.异常处理:如果视图中抛出了未处理异常...return Response(...) methods 声明该action对应请求方式,列表传递 detail 声明该action路径是否与单一资源对应。...page=&page_size= 视图关闭分页pagination_class = None 6.2异常处理 可以设置DRF框架默认异常处理,也可以自定义异常处理函数。

2.4K20

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

', 'PAGE_SIZE': 10, ... } PAGE_SIZE全局设置了默认分页属性:单页数据量 DEFAULT_PAGINATION_CLASS设置为None时,则关闭了所有列表接口后台分页功能...,我们这里提供了自定义分页类component.drf.pagination.PageNumberPagination供大家参考。...我们在DRF提供一个分页基础上,进行了简单改造,内容如下: from collections import OrderedDict from rest_framework...,增加了page和total_page字段,代表当前页和总页数,并修改了返回数据字段为items,这样可以统一接口分页格式,满足前端和第三方系统对接口后台分页绝大部分需求场景。...": 0 } DRF接口一般会直接返回创建数据或者数据列表,如图所示: [DRF接口返回一] [DRF接口返回二] 于是,结合开发规范对接口要求,我们需要对DRF返回格式进行统一处理 首先,我们简单看下

3.6K60

Python进阶43-drf框架(五)

因为jwt做了反爬,需要在token前面加个'jwt ' 注意:有空格  签发token源码分析 ---- 入口 # 前提:给一个局部禁用了所有 认证与权限 视图类发送用户信息得到token,...import OrderingFilter # 3)drf分页类 - 自定义 from . import pagenations class CarListAPIView(ListAPIView)...import OrderingFilter # 3)drf分页类 - 自定义 from . import pagenations ## 自定义过滤器 from api.filters import...过滤条件 响应数据:status,msg,results|data,url资源数据 """ DRF入门 """ 1、封装风格 2、请求生命周期:走APIViewas_view => View...:系统只处理了部分,所以手动还需要处理;后期异常信息需要记录到日志文件 工作流程:先交给drf处理异常,如果有响应结果,代表drf已处理,如果是None,自己处理 """ 序列化组件 # 1)可以将

3.1K20

DRF自动生成OpenAPI文档

DRF自动生成OpenAPI文档 API schemas是非常有用,可以帮助我们生成接口文档以及可与API交互动态客户端。...在这里我们使用drf-spectacular这个第三方库来自动生成OpenAPI schemas. drf-spectacular 安装,配置步骤可以参考drf-spectacular文档,下面简单给出步骤...安装和配置 使用 经过上面的基本配置,我们现在访问api/schema/swagger-ui/来查看swagger-ui风格文档,如下所示: 当你点击schema时候,就会显示响应字段描述...例如: 下面给出视图代码 class BookListView(GenericAPIView): """列表视图""" queryset = BookInfo.objects.all...drf-spectacular自动生成文档,很大程度上依赖于文档字符串以及queryset和serializer_class(DRFAPIView没有这两个属性,对于APIView自动生成文档有困难,

2.7K20

Vue+Django2.0 REST framework 打造前后端分离生鲜电商项目(五)商品列表

一、Django2.0view实现商品列表页 算是对以前django知识一个回顾,方便跟下面的drf(Django REST framework)实现商品列表页作对比 1.在apps/goods下新建...(self): 2 return self.username 三、drf实现商品列表功能 1.ModelSerializer(相当于django中modelform,但是更加强大)...分页 drf是自带分页功能,只要在views中进行一下规则配置,就可以直接调用使用: 1 from .serializer import GoodsSerializer 2 from rest_framework.views...不同之处: 它包括所有解析内容,包括文件和非文件输入。 它支持解析HTTP方法以外内容POST,这意味着你可以访问内容PUT和PATCH请求。...小结 我们通过viewsets和一个类,完成了商品列表页,分页,过滤,搜索,排序。

4.8K61

python技术面试题(十八)

承认自己并非你所以为那种人,称得上是一种相当可怕经历。 ? python技术面试题(十八) 1.给定一个列表,使用sort对其进行去重操作,从最后一个元素开始。...ids = [1,4,3,3,4,2,3,4,5,6,1] ids.reverse() news_ids = list(set(ids)) news_ids.sort(key=ids.index) print...(news_ids) ---------------- [1, 6, 5, 4, 3, 2] sort()函数 语法: list.sort(self,key=None,reverse=False) 用于对原列表进行排序...key --- 指定可迭代对象中一个元素来进行排序。像上面的代码一样,指定了列表索引排序,所以顺序就是题目要求顺序。 reverse --- True代表降序,False代表升序。...团队开发注意事项 浅谈密码加密 Django框架中英文单词 Django中数据库相关操作 DRF框架中英文单词 重点内容回顾-DRF Django相关知识点回顾 美多商城项目导航帖

46620

Django REST Framework

/反序列化-DRF 实验步骤 创建project DRF2 创建app MySer settingsserializer类型参数 read_only: 仅用于序列化输出 write_only: 反序列化输入...属性 请求数据体,类似于Djangorequest.POST, request.FILES 在DRF中主要指的是Json query_params 所有传入关键字 api.tulingxueyuan.com...Renderer渲染器对返回内容进行渲染 REST_FRAMEWORK = { 'DEFAULT_RENDERER_CLASSES': ( # 默认响应渲染类...drf请求和反馈类会引发并处理APIException在dispatch之前,会进行身份验证,权限检查,流量控制支持属性有authentication_classes: 列表或者元祖,身份验证类...: 分页控制器 - filter_backends: 过滤器后端 - lookup_field:查询条件字段,默认为pk - get_queryset: 返回查询结果集集合

2.1K63

DRF二级视图GenericAPIView

列表视图:获取多条数据(或全部数据),例如:获取所有书籍 详情视图:获取单个数据,例如:获取《西游记》价格,作者,出版社等信息。...URL conf 应包含与此值对应关键字参数。如果未设置,则默认使用lookup_field. 分页 以下属性用于在与列表视图一起使用时控制分页。...pagination_class 分页列表结果时应使用分页类。...设置pagination_class=None将禁用此视图分页。 过滤 filter_backends 应用于过滤查询集过滤器后端类列表。...这些例子中有些用到了分页器。这并不影响我们理解。如果不清楚DRF分页,可以看这里 列表和新增视图 列表视图中,每次按照分页大小返回多个数据。

67710

RESTful源码笔记之RESTful FrameworkMixins小结

0x00 引言 本篇对drfmixins进行简要分析总结。 Mixins在drf中主要配合viewset共同使用,实现http方法与mixins相关类与方法进行关联。...course.fav_num += 1 course.save() 显然,这不是唯一解决方法,我们还可以在seriliazer进行设置,我们还可以使用drf信号量进行解决!...,如果在viewset中设置了pagination_class,那么这里就会起作用 # 获取当前页queryset,如果不存在分页,返回None page = self.paginate_queryset...(queryset) if page is not None: # 分页不为空,那么不能简单执行Response(serializer.data)...# 还需要将相关page信息序列化在进行响应 serializer = self.get_serializer(page, many=True) return

32710

Django(42)DRF安装与使用

DRF介绍 DRF是Django Rest Framework单词简写,是在Django框架中实现Restful API一个插件,使用他可以非常方便实现接口数据返回。...Django中也可以使用JsonResponse直接返回json格式数据,但是DRF相比直接使用Django返回json数据有以下几个好处: 可以自动生成API文档,在前后端分离开发时候进行沟通比较有用...安装DRF 安装drf之前,需要以下依赖 Python (3.5, 3.6, 3.7) Django (1.11, 2.0, 2.1, 2.2, 3.0) 准备好以上依赖后,可以通过以下命令安装 pip3...'rest_framework', ] drf知识体系 接口:什么是接口、restful接口规范 CBV生命周期源码 – 基于restful规范下CBV接口 请求组件、解析组件、响应组件 序列化组件(...灵魂) 三大认证(重中之重):认证、权限(权限六表)、频率 其他组件:过滤、筛选、排序、分页、路由 发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/165781.html

63120
领券