首页
学习
活动
专区
圈层
工具
发布

构建强大的API-Django中的REST框架探究与实践

在当今的Web开发中,构建强大的API已经成为了不可或缺的一部分。而在Python领域,Django框架提供了强大的REST框架,为开发者提供了一种高效、灵活的方式来构建和管理API。...在views.py中定义了一个视图集,使用了ModelViewSet,它提供了默认的CRUD操作。在urls.py中配置了路由,将API端点映射到对应的视图集上。6....测试与文档为了确保API的稳定性和正确性,我们需要编写测试来验证API的各种功能和行为。Django REST框架提供了内置的测试工具和类,可以帮助我们编写各种类型的测试。...Django REST框架提供了丰富的文档和测试工具,可以帮助我们编写和管理API的文档和测试。...Django REST框架提供了内置的测试工具和类,可以帮助我们编写各种类型的测试。例如,我们可以编写基于APITestCase的测试类来测试API的各种端点和功能。25.

1.7K20

Django REST Framework-如何使用过滤器

Django REST Framework (DRF) 是一个开源的 Web 框架,它建立在 Django 上,可以帮助你轻松地构建 RESTful API。...编写自定义的过滤器除了使用内置的过滤器之外,你还可以编写自定义的过滤器来满足你的需求。编写自定义的过滤器可以让你更好地控制过滤逻辑,并且可以使用任何 Django QuerySet 方法来处理过滤器。...在这个例子中,我们使用 queryset.filter() 方法过滤出价格大于等于 10 的书籍。接下来,我们需要将这个自定义的过滤器添加到我们的视图集合中。...我们还展示了如何在视图集合中使用这些过滤器,并提供了一些例子来帮助你更好地理解它们的用法。...另外,我们还展示了如何编写自定义的过滤器,以便你可以更好地控制过滤逻辑,并使用任何 Django QuerySet 方法来处理过滤器。

2.6K40
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    DRF框架学习(四)

    DRF框架学习(四) 1.视图集对象的action属性 作用: 获取现在要执行的是哪一种操作。 self.action:是字符串类型,目的是获取所有执行的操作。...返回latest操作所使用的查询集 else: # 返回其他操作所使用的查询集 2.路由Router(urls文件中使用) 作用:(重点) 配合视图集进行使用,动态生成视图集中处理函数的...我们可以在配置文件中设置全局的分页方式,如: REST_FRAMEWORK = { 'DEFAULT_PAGINATION_CLASS': '', 'PAGE_SIZE'...也可通过自定义Pagination类,来为视图添加不同分页行为。...10.2自定义异常处理 10.2.1自定义DRF框架异常处理函数 1.自定义异常处理函数 2.设置EXCEPTION_HANDLER配置项 10.2.2详解 可以在DRF框架异常处理函数的基础上,补充一些其他的异常处理

    3.3K40

    第 15 篇:接口的单元测试

    django 单元测试框架的使用方式。...这里我们再对 djnago 的测试框架做一个回顾整体回顾,至于如何编写和运行测试,后面将会进行详细的讲解,如果想对 django 的单元测试做更基础的了解,推荐回去看看关于测试的 3 篇教程以及 django...下面是 djnago 单元测试框架的一些要点: django 的单元测试框架基于 Python 的 unittest 测试框架。...django 提供了多个 XXTestCase 类,这些类均直接或者间接继承自 unittest.TestCase 类,因为 django 的单元测试框架是基于 unittest 的,所以编写的测试用例类也都需要直接或者间接继承...HighlightedCharField 涉及到一些高级操作,主要是因为 to_representation 方法中涉及到对 HTTP 请求request 的操作。

    1.4K20

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

    django-haystack 默认返回的搜索结果是一个类似于 django QuerySet 的对象,需要配合模板系统使用,因为未被序列化,所以无法直接用于 django-rest-framework...但是,通过之前的功能我们看到,使用 django-rest-framework 是一个近乎标准化但又枯燥无聊的过程:首先是编写序列化器用于序列化资源,然后是编写视图集,提供对资源各类操作的接口。...所以接下来就进入到 django-rest-framework 标准开发流程:定义序列化器 -> 编写视图 -> 配置路由,这样一个标准的搜索接口就开发出来了。...但是,django-rest-framework 并没有提供这些比较个性化需求的序列化字段,因此接下来我们接触 drf 的一点高级用法——自定义序列化字段。...在我们自定义的逻辑中,首先调用父类 CharField 的 to_representation 方法,父类序列化的逻辑是将任何输入的值都转为字符串;接着我们从 context 属性中取得 request

    2K20

    Django API开发: 使用Python和Django构建web APIs

    Django和Django REST Framework的结合是构建Web API的最流行和可自定义的方法之一,被世界上许多大型科技公司(包括Instagram,Mozilla,Pinterest和Bitbucket...如果在未来几年内最终将当前的前端框架替换为更新的框架,则后端API可以保持不变。 不需要大的重写。 其次,API可以支持以不同语言和框架编写的多个前端。...Django REST 框架 有成百上千的第三方应用程序可为Django添加更多功能。 (您可以在Django Packages上看到完整的可搜索列表。)...但是Django REST Framework可以说是Django的杀手级应用。 它是成熟的,功能齐全,可自定义,可测试的,并且文档齐全。...在第5-9章中,我们构建了一个生产就绪的Blog API,其中包含完整的CRUD功能。 我们还将介绍深度权限,用户身份验证,视图集,路由器,文档等。

    3.3K21

    python教程

    通常,你并不想这么做,并且事实上REST框架视图更实用的做法不是这样的,但是目前来说,这足以到达我们的目的。...用这些标识符代替纯数字的HTTP状态码是很好的注意。 装饰API视图 REST框架提供两个装饰器,你可以用它们来写API视图。 1 @api_view装饰器用在基于视图的方法上。...相似地,虽然我们可以在响应对象中带数据,但允许REST框架渲染响应成正确的内容类型。...API上,为我们的系统用户和snippet的创建者,添加了很多权限和端点。...REST框架支持以上所有方式,都能适应正向或者反向关系,或者就行使用一般的外键一样使用自定义的管理方式。 这种情况下,我们想要在实体之间使用超链接方式。

    5.8K10

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

    前言 使用视图集ViewSet,可以将一系列逻辑相关的动作放到一个类中: list() 提供一组数据 retrieve() 提供单个数据 create() 创建数据 update() 保存数据...destory() 删除数据 ViewSet视图集类不再实现get()、post()等方法,而是实现动作 action 如 list() 、create() 等。...视图集只在使用as_view()方法的时候,才会将action动作与具体请求方式对应上。...,而这些方法与前面讲过的Mixin扩展类提供的方法同名,所以我们可以通过继承Mixin扩展类来复用这些方法而无需自己编写。...获取serializer_class所指定的序列化器进行初始化操作 ser = self.get_serializer(books, many=True) # 使用序列化器对象的

    1.9K30

    drf的接口文档生成与管理

    一个好的接口文档能够帮助我们快速上手这类项目、便于阅读已有代码、对接接口自动化测试等等 往往一个清晰的API接口文档编写起来比较费时费力,于是有很多接口文档管理工具供我们使用:YApi、ShowDoc、...2.5 补充说明 1、上面访问到的接口文档,可以按照右边的指引通过安装coreapi-cli,通过命令行操作访问接口文档 2、对于视图集ViewSet中的retrieve名称,在接口文档中叫做read...的 下面记录在drf中通过swagger生成接口文档的具体实现流程,参考drf swagger文档 3.2 安装django-rest-swagger库 pip3 install django-rest-swagger...': True, # 切换使用Django Auth作为身份验证机制 将其设置为True将会在Swagger UI上显示一个登录/注销按钮,并将csrf_tokens发布到API 'USE_SESSION_AUTH..., 如 cache(指定 cache backend), key_prefix(缓存key的前缀) 等等, 详见django官方文档 需要注意的是, 由于 drf-yasg 支持针对不同用户返回不一样的

    5.2K10

    drf框架中所有视图及用法

    0909自我总结 drf框架中所有视图及用法 一.drf框架中的所有视图类 from django.views import View from rest_framework import views,...generics, mixins, viewsets 最基础:django自带的views类 drf框架中最基础的视图类:views.APIView drf框架中工具视图:generics GenericAPIView...上述视图都是基于django自带的views进行相关方法的分装 二.viewsets视图集 ViewSetMixin:视图集工具 - 重写as_view - 将 请求方式 映射到视图类中的 指定方法...那继承功能,也可以自定义功能 ViewSet:与模型类无关或不是标准模型类接口 - 一般都是自定义功能 三.generics中GenericAPIView使用 将 queryset 和 serializer_class...居然有什么方法看源码即可ctrl+左键看源码 六自定制视图 本来get他就只会找类中get方法我们可以对其设置让他找我们对于的名称 路由层 from django.conf.urls import url

    2K30

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

    因此,django-rest-framework 引入了视图集(Viewsets),把对同一个资源的不同操作,集中到一个类中。...同样的,针对 Web 开发中的常见逻辑,django-rest-framework 也提供了通用视图集,进一步简化开发工作。...要注意一点的是,视图集基类提供的是除资源操作以外的通用逻辑(例如 HTTP 请求预处理、HTTP 响应后处理、认证、鉴权等),而对于资源的操作(如序列化、更新、删除资源等)则放在相应的 Mixin 混入类里...例如这里 basename='post',列出资源列表的 action 为 list(见上一篇教程中关于 action 的讲解),所以生成的获取文章资源列表的视图函数名为 post-list,使用 reverse...运行开发服务器,访问 http://127.0.0.1:8000/api/,界面如下: django-rest-framework 为我们自动生成了 API 交互后台,在这个界面中可以和我们创建的 API

    1K10

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

    跟着官方文档学Python Django Rest framework 这周将会持续更新跟着官方文档学Python系列文章,主要是围绕web框架以及其他后端组件的官方文档展开学习。...如果我们把前端页面看作是一种用于展示的客户端,那么 API 就是为客户端提供数据、操作数据的接口。...'rest_framework', ] 在项目中如果使用rest_framework框架实现API接口,主要有以下三个步骤: 将请求的数据(如JSON格式)转换为模型类对象 通过模型类对象进行数据库操作..._all__" # 对所有字段操作 # 验证数据的方法[反序列化:接收客户端的数据] # 操作数据的带密码[反序列化:保存数据(添加/更新)] 编写视图views.py from.../', include("students.urls")) ] # django.urls.path 用于编写字符串路由 # django.urls.re_path 用于编写正则路由 测试API,命令行启动服务器

    2.9K10

    drf之请求、响应、视图

    APIView与View的不同之处在于: 传入到视图方法中的是REST framework的Request对象,而不是Django的HttpRequeset对象; 视图方法可以返回REST framework...GenericAPIView 继承自APIVIew,主要增加了操作序列化器和数据库查询的方法,作用是为下面Mixin扩展类的执行提供方法支持。通常在使用时,可搭配一个或多个Mixin扩展类。...() 删除数据 ViewSet视图集类不再实现get()、post()等方法,而是实现动作 action 如 list() 、create() 等。...视图集只在使用as_view()方法的时候,才会将action 动作与具体请求方式对应上。...3.2 action 在视图集中,我们可以通过action对象属性来获取当前请求视图集时的action动作是哪个。除了默认的方法动作外,还可以添加自定义动作。

    2.5K20
    领券