wemake-services/django-modern-rest · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈
支持类型和异步的 Django Modern REST 框架!
特性
- 极速
- 支持
django>=5.0 - 支持
pydantic2、msgspec、attrs、dataclasses、TypedDict作为模型模式,但不绑定于这些库中的任何一个 - 支持异步 Django,内部无任何
sync_to_async调用,已测试可在自由线程构建中正常工作 - 完全类型化,并在严格模式下使用
mypy、pyright和pyrefly进行检查 - 支持内容协商,为
json、msgpack、SSE、Json Lines 等提供默认实现 - 对请求和响应(包括错误)进行严格的模式验证
- 开箱即用地支持 OpenAPI 3.1 / 3.2 语义模式生成
- 支持所有现有的
django原语和包,无需自定义运行时 - 出色的测试工具,包括 schemathesis、polyfactory、tracecov、捆绑的
pytest插件以及 Django 默认的测试原语 - 100% 测试覆盖率,包含 2000+ 个精心设计的单元测试、集成测试和基于属性的测试
- 高 安全标准
- 由 社区构建 并服务于社区,并非单人项目
- 出色的文档
- 无 AI 垃圾内容,但 为 LLM 时代构建
- 无表情符号 🌚️️
同步模式
用户评价
我真正喜欢 django-modern-rest 的一点是它可插拔的 序列化器和验证器。与 pydantic 紧密耦合的框架 使用起来可能非常痛苦。
— Kirill Podoprigora,CPython 核心开发者
使用
django-modern-rest对我的生产力来说是一个改变游戏规则的因素。对请求和响应都有严格的类型安全和模式验证,意味着我花在调试上的时间更少,花在构建上的时间更多。
— Josiah Kaviani,Django 核心开发者
我很少看到将 OpenAPI 模式视为一等公民的框架。
django-modern-rest不仅生成了准确反映你代码的模式,还为你提供了验证它的工具。
— Dmitry Dygalo,Schemathesis 作者
安装
适用于:
- CPython 3.11+ 或 PyPy 3.11+
- Django 5.0+
pip install django-modern-rest
包含以下若干附加功能:
'django-modern-rest[msgspec]'提供msgspec支持 以及最快的 json 解析,建议始终包含'django-modern-rest[pydantic]'提供pydantic支持'django-modern-rest[attrs]'提供attrs支持'django-modern-rest[jwt]'提供pyjwt认证支持'django-modern-rest[openapi]'提供OpenAPIschema validation,yamlOpenAPI 视图, 并使用polyfactory生成更好的 OpenAPI 示例
示例
最短的示例 (点击此处复制整个文件):
>>> import uuid
>>> import pydantic
>>> from dmr import Body, Controller, Headers
>>> # Or use `dmr.plugins.msgspec` or write your own!
>>> from dmr.plugins.pydantic import PydanticFastSerializer
>>> class UserCreateModel(pydantic.BaseModel):
... email: str
>>> class UserModel(UserCreateModel):
... uid: uuid.UUID
... consumer: str
>>> class HeaderModel(pydantic.BaseModel):
... consumer: str = pydantic.Field(alias='X-API-Consumer')
>>> class UserController(Controller[PydanticFastSerializer]):
... async def post( # <- can be sync as well!
... self,
... parsed_body: Body[UserCreateModel],
... parsed_headers: Headers[HeaderModel],
... ) -> UserModel:
... """All added props have the correct runtime and static types."""
... return UserModel(
... uid=uuid.uuid4(),
... email=parsed_body.email,
... consumer=parsed_headers.consumer,
... )
然后在你的 urls.py 中路由此控制器:
>>> from django.urls import include, path
>>> from dmr.routing import Router
>>> router = Router(
... 'api/',
... [
... path('user/', UserController.as_view(), name='users'),
... ],
... )
>>> urlpatterns = [
... path(router.prefix, include((router.urls, 'my_app'), namespace='api')),
... ]
完成!现在你拥有了一个拥有 100% 类型安全验证和交互式文档的闪亮 API。
下一步:
- 完整文档 包含你开始所需的一切!
- wemake-django-template 可用于使用
django-modern-rest快速启动你的新项目! - awesome-django-modern-rest - 一个与
django-modern-rest相关的精选资源列表!
License
Credits
本项目使用 wemake-python-package 生成。当前模板版本为:e1fcf312d7f715323dcff0d376a40b7e3b47f9b7。查看自那以来的 更新。