第三方包
软件生态系统 […] 建立一个社区,进一步加速知识、内容、问题、专业知识和技能的共享。
— 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 框架的所有包和生态系统。
认证
- djangorestframework-digestauth - 提供摘要访问身份验证支持。
- django-oauth-toolkit - 提供 OAuth 2.0 支持。
- djangorestframework-simplejwt - 提供 JSON Web 令牌身份验证支持。
- hawkrest - 提供 Hawk HTTP 授权。
- djangorestframework-httpsignature - 提供易于使用的 HTTP 签名身份验证机制。
- djoser - 提供一组视图来处理基本操作,例如注册、登录、注销、密码重置和帐户激活。
- dj-rest-auth - 提供一组 REST API 端点,用于注册、身份验证(包括社交媒体身份验证)、密码重置、检索和更新用户详细信息等。
- drf-oidc-auth - 为 DRF 实现 OpenID Connect 令牌身份验证。
- drfpasswordless - 通过电子邮件和手机号码添加(Medium、Square Cash 启发)无密码登录和注册。
- django-rest-authemail - 提供使用电子邮件地址进行用户注册和身份验证的 RESTful API。
权限
- drf-any-permissions - 提供替代权限处理。
- djangorestframework-composed-permissions - 提供一种简单的方法来定义复杂权限。
- rest_condition - 另一个扩展,用于以简单方便的方式构建复杂权限。
- dry-rest-permissions - 提供一种简单的方法来定义各个 API 操作的权限。
- drf-access-policy - 受 AWS 的 IAM 策略启发的声明性和灵活的权限。
- drf-psq - 一个扩展,支持基于权限规则的基于操作的 permission_classes、serializer_class 和 queryset。
序列化器
- 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。
序列化器字段
- drf-compound-fields - 提供“复合”序列化器字段,例如简单值的列表。
- drf-extra-fields - 提供额外的序列化器字段。
- django-versatileimagefield - 提供 Django 的库存
ImageField
的替代品,可以轻松地从单个字段中以多种尺寸/呈现方式提供图像。有关 DRF 特定实现文档,请点击此处。
视图
- 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-msgpack - 提供 MessagePack 渲染器和解析器支持。
- djangorestframework-jsonapi - 提供解析器、渲染器、序列化程序和其他工具,以帮助构建符合 jsonapi.org 规范的 API。
- djangorestframework-camel-case - 提供小驼峰 JSON 渲染器和解析器。
- nested-multipart-parser - 提供用于 http multipart 请求的嵌套解析器
渲染器
- djangorestframework-csv - 提供 CSV 渲染器支持。
- djangorestframework-jsonapi - 提供解析器、渲染器、序列化程序和其他工具,以帮助构建符合 jsonapi.org 规范的 API。
- drf_ujson2 - 使用 UJSON 包实现 JSON 渲染。
- rest-pandas - Pandas DataFrame 驱动的渲染器,包括 Excel、CSV 和 SVG 格式。
- djangorestframework-rapidjson - 提供带有解析器和渲染器的 rapidjson 支持。
过滤
- djangorestframework-chain - 允许关系和查找过滤器的任意链接。
- django-url-filter - 允许通过对人友好的 URL 安全地过滤数据。它是一个不依赖于 DRF 的通用库,但它提供了与 DRF 的轻松集成。
- drf-url-filter 是一个简单的 Django 应用程序,用于以干净、简单且可配置的方式对 drf
ModelViewSet
的Queryset
应用过滤器。它还支持对传入查询参数及其值进行验证。 - django-rest-framework-guardian2 - 提供与 django-guardian 的集成,包括以前在 DRF 中找到的
DjangoObjectPermissionsFilter
。
其他
- drf-sendables - Django REST Framework 的用户消息
- cookiecutter-django-rest - 一个 cookiecutter 模板,负责设置和配置,以便你可以专注于让你的 REST API 变得更棒。
- djangorestrelationalhyperlink - 一个超链接序列化器,可以通过超链接来改变关系,但其他方面就像一个超链接模型序列化器。
- django-rest-framework-proxy - 代理,用于将传入请求重定向到另一个 API 服务器。
- gaiarestframework - django-rest-framework 的实用工具
- drf-extensions - 一组自定义扩展
- ember-django-adapter - 用于与 Ember.js 协同工作的适配器
- django-versatileimagefield - 提供 Django 的库存
ImageField
的替代品,可以轻松地从单个字段中以多种尺寸/呈现方式提供图像。有关 DRF 特定实现文档,请点击此处。 - drf-tracking - 用于跟踪对 DRF API 视图的请求的实用工具。
- drf_tweaks - 具有单步验证(及更多)的序列化器、不带计数的分页和其他调整。
- django-rest-framework-braces - 用于与 Django Rest Framework 协同工作的实用工具集合。最值得注意的是 FormSerializer 和 SerializerForm,它们是 DRF 序列化器和 Django 表单之间的适配器。
- drf-haystack - Django Rest Framework 的 Haystack 搜索
- django-rest-framework-version-transforms - 启用使用增量转换对 DRF 资源表示进行版本控制。
- django-rest-messaging、django-rest-messaging-centrifugo 和 django-rest-messaging-js - 使用 DRM 的实时可插拔消息服务。
- djangorest-alchemy - REST 框架的 SQLAlchemy 支持。
- djangorestframework-datatables - Django REST 框架和 Datatables 之间的无缝集成。
- django-rest-framework-condition - 用于管理 Django REST 框架的 HTTP 缓存头(ETag 和 Last-modified)的装饰器。
- django-rest-witchcraft - 提供 DRF 与 SQLAlchemy 的集成,包括 SQLAlchemy 模型序列化器/视图集以及其他一些好东西
- djangorestframework-mvt - 用于创建将 Postgres 数据作为 Map Box 矢量切片提供的视图的扩展。
- drf-viewset-profiler - 按行分析视图集所有方法的库。
- djangorestframework-features - 基于命名特性进行高级架构生成等。
- django-elasticsearch-dsl-drf - 将 Elasticsearch DSL 与 Django REST 框架集成。该软件包提供视图、序列化器、过滤器后端、分页和其他便捷的附加组件。
- django-api-client - DRF 客户端,对端点响应进行分组,以便在 CBV 和 FBV 中使用,就像使用 Django 的原生模型一样。
- fast-drf - 一个基于模型的库,用于使 API 开发更快、更轻松。
- django-requestlogs - 为 REST 框架提供审计日志记录的中间件和其他帮助程序。
- drf-standardized-errors - DRF 异常处理程序,用于标准化所有 API 端点的错误响应。
- drf-api-action - 将 DRF 的强大功能用作库函数
定制
- drf-redesign - 一个使用 Bootstrap 5 为可浏览 API 提供全新外观的项目。
- drf-material - 一个使用 Material Design 为可浏览 API 提供时尚优雅外观的项目。