第三方包

软件生态系统 […] 建立一个社区,进一步加速知识、内容、问题、专业知识和技能的共享。

Jan Bosch

关于第三方包

第三方包允许开发人员共享扩展 Django REST 框架功能的代码,以支持其他用例。

我们支持鼓励强烈支持创建第三方包来封装新行为,而不是直接向 Django REST 框架添加其他功能。

我们的目标是让创建第三方包尽可能容易,同时保持一个简单维护良好的核心 API。通过推广第三方包,我们确保包的责任属于其作者。如果一个包被证明足够受欢迎,它总是可以考虑纳入核心 REST 框架。

如果您对新功能有任何想法,请考虑如何将其打包为第三方包。我们很乐意在邮件列表上讨论想法。

创建第三方包

版本兼容性

有时,为了确保您的代码在各种不同版本的 Django、Python 或第三方库上运行,您需要根据环境运行略有不同的代码。任何以这种方式分支的代码都应隔离到一个 compat.py 模块中,并应提供一个公共接口,供代码库的其余部分使用。

查看 Django REST 框架的 compat.py 以获取示例。

包可用后

一旦您的包有完善的文档并且可以在 PyPI 上获得,您可能希望与可能发现它有用的人分享它。

添加到 Django REST 框架网格

我们建议将您的包添加到 Django Packages 上的 REST Framework 网格。

添加到 Django REST 框架文档

在 GitHub 上创建请求问题,我们会在 REST 框架主要文档中添加一个链接。您可以在 API 指南部分的第三方包中添加您的包,例如身份验证权限。您还可以在第三方包部分中链接您的包。

在讨论组中发布。

您还可以通过讨论组让其他人了解您的包。

现有第三方包

Django REST 框架拥有不断壮大的开发者、包和资源社区。

Django Packages上查看一个网格,详细说明 Django REST 框架的所有包和生态系统。

要提交新内容,打开问题创建请求

认证

权限

序列化器

  • django-rest-framework-mongoengine - 序列化程序类,支持将 MongoDB 用作 Django REST 框架的存储层。
  • djangorestframework-gis - 地理附加组件
  • djangorestframework-hstore - 序列化程序类,支持 django-hstore DictionaryField 模型字段及其模式模式功能。
  • djangorestframework-jsonapi - 提供解析器、渲染器、序列化程序和其他工具,以帮助构建符合 jsonapi.org 规范的 API。
  • html-json-forms - 提供算法和序列化程序来处理 HTML JSON 表单提交,符合(非活动)规范。
  • django-rest-framework-serializer-extensions - 启用黑/白名单字段,并根据每个视图/请求有条件地扩展子序列化程序。
  • djangorestframework-queryfields - 序列化程序混合,允许客户端控制哪些字段将在 API 响应中发送。
  • drf-flex-fields - 序列化程序通过 URL 参数提供动态字段扩展和稀疏字段集。
  • drf-action-serializer - 序列化程序为 ViewSets 提供每个操作字段配置,防止必须编写多个序列化程序。
  • djangorestframework-dataclasses - 序列化程序为 Python 数据类提供自动字段生成,就像内置的 ModelSerializer 为模型所做的那样。
  • django-restql - 将你的 REST API 变成一个类似 GraphQL 的 API(它允许客户端控制哪些字段将在响应中发送,使用类似 GraphQL 的语法,支持对平面和嵌套字段进行读写)。
  • graphwrap - 只需两行代码,即可将 REST API 转换为完全兼容的 GraphQL API。利用 Graphene-Django 在运行时动态构建 API 中每个视图的 GraphQL ObjectType。

序列化器字段

视图

  • django-rest-multiple-models - 提供一个通用视图(和 mixin),用于通过单个 API 请求发送多个序列化模型和/或查询集。
  • drf-typed-views - 使用 Python 类型注释来验证/反序列化请求参数。灵感来自 API Star、Hug 和 FastAPI。
  • rest-framework-actions - 提供对 ViewSets 中每个操作的控制。每个操作的序列化器,方法。

路由

  • drf-nested-routers - 提供路由器和关系字段,用于处理嵌套资源。
  • wq.db.rest - 提供具有合理默认 URL 和视图集的管理风格模型注册 API。

解析器

渲染器

过滤

  • djangorestframework-chain - 允许关系和查找过滤器的任意链接。
  • django-url-filter - 允许通过对人友好的 URL 安全地过滤数据。它是一个不依赖于 DRF 的通用库,但它提供了与 DRF 的轻松集成。
  • drf-url-filter 是一个简单的 Django 应用程序,用于以干净、简单且可配置的方式对 drf ModelViewSetQueryset 应用过滤器。它还支持对传入查询参数及其值进行验证。
  • django-rest-framework-guardian2 - 提供与 django-guardian 的集成,包括以前在 DRF 中找到的 DjangoObjectPermissionsFilter

其他

定制

  • drf-redesign - 一个使用 Bootstrap 5 为可浏览 API 提供全新外观的项目。
  • drf-material - 一个使用 Material Design 为可浏览 API 提供时尚优雅外观的项目。