SuperAPI AI 工具集

django-ninja

编程与开发

查看项目

更新于 10-15 20:13

技能介绍

用途:Django Ninja 是用于构建快速、类型安全 REST API 的 Web 框架,基于 Django 与 Python 3.6+ 类型提示,资料称兼容 django-ninja 1.6.x 与 Django 6.0,并要求 Pydantic v2。它提供自动请求校验、响应序列化和 OpenAPI 文档生成。

主要能力:基于 Pydantic 的高性能;类型安全与 IDE 自动补全;自动 OpenAPI/Swagger 文档;原生 async/await 支持;通过 ModelSchema 从 Django 模型生成 Schema;支持嵌套 Schema、Query、Path、Body、Form、File 参数;支持认证回调、分页、文件上传。

使用方式:安装命令为 pip install django-ninja,并在 INSTALLED_APPS 中加入 'ninja'。用 NinjaAPI 实例定义 api.get/api.post 等装饰器处理函数,在 urls.py 中以 path("api/", api.urls) 挂载。Schema 可继承 Schema 或 ModelSchema,ModelSchema 通过 Config 指定 model 与 model_fields。测试可用 ninja.testing.TestClient。

适用场景:构建 Django REST API、从 DRF 迁移、需要类型安全与自动文档的项目。资料给出 DRF 到 Django Ninja 的映射,并指出可浏览 API、get_serializer_class() 多态、复杂动态嵌套序列化器没有直接等价物。

限制与注意:校验在 resolver 执行前完成,失败直接返回 422,无法在函数内捕获;省略 response= 会导致 OpenAPI 文档缺少响应类型;dict/list 注解会绕过校验;operation_id 变更会破坏已生成的客户端。生态库包括 django-ninja-extra、django-ninja-jwt、django-ninja-aio-crud、django-contract-tester,各有取舍。官方文档为 https://django-ninja.dev/,仓库为 https://github.com/vitalik/django-ninja。