用途:django-modern-rest(dmr)为 Django 提供类型化、同步与异步的 REST 层。适用于任何导入 dmr 的文件,或依赖中含 django-modern-rest 的项目,也用于构建“类型化”“现代”或“异步”的 Django REST API。
主要能力:Controller 类每个 HTTP 动词对应一个方法;DTO 可从 Body、Query、Headers、Cookies、Path 注解解析;基于 Router 的 URL;内置认证与限流;由类型生成 OpenAPI。
使用方式:先确认已安装版本与 extras(uv pip show django-modern-rest 或查看 lock 文件),API 在小版本间会变化,应阅读所装版本文档而非最新版。文档按版本提供且对 LLM 友好:索引 https://django-modern-rest.readthedocs.io/en/<version>/llms.txt,任意文档 URL 把 .html 换成 .md 可得 Markdown。验证时运行 python manage.py check、项目类型检查器,以及用 dmr_client / dmr_rf fixture 编写的测试;OpenAPI 变更运行 python manage.py dmr_export_schema <path> 并审查 diff。
关键规则:即使使用 pydantic 也安装 django-modern-rest[msgspec];开发依赖加 django-stubs[compatible-mypy]。组件参数必须命名为 parsed_body、parsed_query、parsed_headers、parsed_path、parsed_cookies,其他名称不会被解析;可选组件写作 Body[UserModel | None] = None。不要返回 HttpResponse(...),改用 self.to_response(...) 或 self.to_error(...);错误抛 APIError 并在 handle_error / handle_async_error 处理。优先 @modify 而非 @validate;优先 MsgspecSerializer,纯 JSON 的 pydantic 项目优先 PydanticFastSerializer;使用 MsgspecSerializer 时优先 BodyMsgspec。使用 dmr.routing.path 与 Router,并安装 build_404_handler / build_500_handler。开发与测试保持 validate_responses 开启,仅生产关闭;不要禁用 semantic_responses,不要设置空 parsers 或 renderers。同步与异步需匹配。认证端点用 concrete_views 的 as_view(serializer=...),不要仅为复述默认载荷而继承 dmr.security.*.views。as_view 会静默忽略 throttling=、auth=。测试用 dmr_rf 与 dmr_client,载荷用 polyfactory,并用 schemathesis 针对 OpenAPI schema。
限制:资料未提供收费、价格、平台与效果信息;具体版本号、完整 API 细节需查阅对应版本文档。