Django-Modern-Rest: 稳健、类型安全型 Django REST API 的新时代

Django 生态系统在保留其核心优势的同时,不断进化以适应 Web 开发的新范式。最近的一个 "Show HN" 推介了 django-modern-rest,这是由 CPython 核心开发者兼 Django Software Foundation 成员 Nikita Sobolev 发起的一个新项目,旨在为 Django 应用提供一个现代、稳健且高性能的 REST 框架。这一举措具有特别重要的意义,因为它在坚持 Django 既定原则的同时,解决了诸如严格类型、异步操作以及与现代数据验证库无缝集成等当代需求。

django-modern-rest 将自己定位为构建 API 的解决方案,这些 API 不仅速度极快且安全,而且具有前瞻性,特别是在这个日益受到大语言模型 (LLMs) 影响的时代。

核心理念:不妥协的现代化

django-modern-rest 的核心是对现代开发实践的承诺,同时又不放弃 Django 的稳定性与熟悉感。该项目明确指出 "No AI slop, but built for the LLM era"(拒绝 AI 垃圾内容,但为 LLM 时代而构建),这表明其专注于结构良好、可预测的代码库,这些代码库可以轻松地与先进工具(包括 AI 驱动的开发辅助工具)集成或被其理解,而无需由其生成。

极速性能与异步支持

该框架专为速度而设计,原生支持异步 Django 操作。至关重要的是,它无需依赖 sync_to_async 调用,这通常会引入额外的开销和复杂性。这种设计选择确保了即使在 free-threading 构建版本中也能实现最佳性能,使其适用于高吞吐量应用。

全面的 Schema 与类型系统集成

django-modern-rest 为各种流行的 Python schema 和数据验证库提供了广泛支持,包括 pydantic2msgspecattrsdataclassesTypedDict。这种灵活性允许开发者选择自己偏好的工具来定义数据模型,同时确保对传入请求和传出响应(包括错误负载)进行严格的 schema 验证。整个框架也是完全类型化的,并使用 mypypyrightpyrefly 在严格模式下进行严格检查,从而提升代码质量并减少运行时错误。

先进的内容协商与 API 文档

内容协商是其一等公民,提供了对常见格式如 jsonmsgpack、SSE (Server-Sent Events) 和 Json Lines 的默认实现。这使得 API 可以根据不同客户端的需求,以最合适的格式提供数据。此外,该框架为 OpenAPI 3.1 / 3.2 语义化 schema 生成提供开箱即用的支持,简化了全面且最新的 API 文档创建过程。

稳健的测试与安全标准

质量与安全至关重要。该项目拥有 100% 的测试覆盖率,包含超过 2000 个精心设计的单元测试、集成测试和基于属性的测试。它集成了强大的测试工具,如 schemathesispolyfactorytracecov,并附带了一个 pytest 插件,同时还利用了 Django 的默认测试原语。

社区驱动且兼容 Django

django-modern-rest 是由社区为社区构建的,强调协作开发。它与现有的 Django 原语和包保持完全兼容,这意味着开发者可以采用它而无需彻底重构整个应用栈或引入自定义运行时。

重燃 Django 的吸引力

django-modern-rest 的推出引起了许多资深 Django 开发者的共鸣。正如一位 Hacker News 评论者在反思 Django 的持久价值时所言:

我仍然记得 3-4 年前,我用 Django 构建了我的第一个创业公司的整个技术栈。当时有两个平台,Flask 和 Django,大家都建议我选择 Django。我对 Django 还有很多美好的回忆。如果我查看我的 GitHub,现在大约有 20 个不同的项目是用 Django 开发的。老实说,因为 LLM 热潮和周围的一切,我有点忘了它的名字,但这个真的太棒了。看到它让我找回了很多回忆。谢谢你,并且是的,我会去查看整个项目。它看起来很不错。

这种情绪凸显了,即使在 AI 和其他技术飞速发展的当下,像 Django 这样的框架的基础优势——稳健性、全面的功能以及强大的社区——仍然具有极高的价值。django-modern-rest 似乎是在这些优势之上进行构建,为 Django 应用提供了一条在不牺牲框架固有优势的情况下拥抱现代 API 开发实践的路径。

结论

对于寻求构建高性能、类型安全且文档齐全的 REST API 的 Django 开发者来说,django-modern-rest 提供了一个极具吸引力的选择。通过集成现代 Python 特性与工具,同时保持与 Django 生态系统的深度兼容,它为当代 Web 开发挑战提供了强大的解决方案,确保 Django 在 API 构建领域依然是一个相关且具有竞争力的选择。

Sources