SuperAPI AI 工具集

dmr-from-django-ninja

通用与其它

查看项目

更新于 10-16 02:28

技能介绍

用途:把 django-ninja / ninja-extra 的传输层逐步迁移到 django-modern-rest(DMR),默认采用严格传输等价模式,保持路径、方法、请求/响应模式、状态码、响应头、认证与限流语义;仅在用户明确批准偏差时才改用 DMR 原生行为,且所有有意偏差需逐条列出。

主要能力:盘点 Ninja 端点(NinjaExtraAPI、api_controller、http_get/http_post、ninja.Schema、ninja_jwt、异常处理器、限流器),建立逐端点迁移矩阵;将 ninja.Schema 替换为与 DMR 序列化器兼容的显式类型化 DTO,显式映射请求来源(Body、Query、Path、Headers、Cookies);用 Controller 与组合实现单操作和多方法路径;替换 NinjaExtraAPI 为 DMR 路由加 Django URL include 接线,保持命名空间稳定;迁移认证与限流,优先复用项目现有原生库(如 django-ratelimit、项目认证栈);要求启用全局 validate_responses,并用 ResponseSpec 声明额外响应。

使用方式:先阅读 DMR 官方 LLM 文档和本地映射文件,盘点项目端点与 URL 接线,再冻结可观察行为、确定错误策略,然后按切片迁移,最后用仓库原生 CI 入口逐切片验证,通过后移除 django-ninja 与 ninja-extra 依赖(除非用户明确保留)。每个检查点按“已保留行为/已批准偏差/未解决缺口”三段汇报。

适用场景:已有 django-ninja 或 ninja-extra 的 Django 项目需要迁移到 DMR,且希望保持客户端契约稳定。

限制:业务逻辑默认不改;不得保留 Ninja 关shim或 Ninja 命名;临时兼容层必须标注并列入未解决缺口;django-ratelimit 不能传字符串 'ALL',需用 ratelimit.core.ALL;strict=True 基类下 JSON UUID 字段可能校验失败,需字段级 strict=False;输入 DTO 若需拒绝未知字段应设 extra='forbid';DMR 原生错误模式下数据库完整性错误可能变成未处理 500,需映射;本资料未提供具体安装命令、价格或平台支持信息。