Django Ninja 是一个使用 Django 和 Python 3.6+ 类型提示构建 API 的网络框架。
主要特点:
- 简单易懂: 设计为易于使用和符合直觉。
- 快速执行: 多亏了 Pydantic 和 异步支持,具有非常高的性能。
- 快速编程: Django Ninja 是一个用于使用 Django 和 Python 3.6+ 类型提示构建 API 的网络框架。
- 基于标准: 基于标准: OpenAPI (以前称为 Swagger) 和 JSON 模式。
- 对 Django 友好: (显然)与 Django 核心和对象关系映射有良好的集成。
- 可用于生产: 被多家公司用于实际项目(如果你使用 Django Ninja 并想发布你的反馈,请发邮件至 ppr.vitaly@gmail.com)。
基准测试:
安装
pip install django-ninja
快速示例
开始一个新的 Django 项目(或使用现有的一个)
django-admin startproject apidemo
在 urls.py
中
from django.contrib import admin
from django.urls import path
from ninja import NinjaAPI
api = NinjaAPI()
@api.get("/add")
def add(request, a: int, b: int):
return {"result": a + b}
urlpatterns = [
path("admin/", admin.site.urls),
path("api/", api.urls),
]
现在,像平常一样运行它:
./manage.py runserver
注意:你不必将 Django Ninja 添加到你的已安装应用中,它就可以工作。
检查它
打开你的浏览器,在 http://127.0.0.1:8000/api/add?a=1&b=2
你将看到 JSON 响应为:
{"result": 3}
- 在
/api/add
接收一个 HTTP GET 请求 - 接收、验证并类型转换 GET 参数
a
和b
- 将结果解码为 JSON
- 为定义的操作生成一个 OpenAPI 模式
交互式 API 文档
现在前往 http://127.0.0.1:8000/api/docs
你将看到自动的、交互式 API 文档 (由 OpenAPI / Swagger UI 或 Redoc 提供) :
总结
总之,你只需 一次 声明参数、请求体等的类型, 作为函数参数。
你使用标准的现代 Python 类型来做到这一点。
你不必学习新的语法、特定库的方法或类等。
只需标准的 Python 3.6+.
例如, 对于一个 int
:
a: int
或者, 对于一个更复杂的 Item
模型:
class Item(Schema):
foo: str
bar: float
def operation(a: Item):
...
...仅通过这一个声明,你就可以得到 :
- 编辑器支持,包括:
- 自动完成
- 类型检查
- 数据验证:
- 当数据无效时自动且清晰的错误
- 甚至对深度嵌套的 JSON 对象进行验证
- 序列化 网络输入的数据并转换成 Python 数据输出, 并从以下读取:
- JSON
- Path parameters 路径参数
- Query parameters 查询参数
- Cookies
- Headers 请求头
- Forms 表单
- Files 文件
- 自动的、交互式 API 文档
这个项目很大程度上受到了 FastAPI 的启发。
请留步
查看 教程 以快速开始。
Django ninja 周边生态:
-
django-ninja : 是一个基于django的框架,取出 django 的精华,搭配 pydantic 的威力,是安全和便捷交叉点的最优选择。
-
django-ninja-crud : 是一个基于django-ninja来简化CRUD接口开发的框架,提供声明式的模型视图集及基于场景的测试方法。
-
django-ninja-extra : 是一个可以让开发者摆脱冗长Django文档,仅用少量代码就能快速构建强大Web应用和现代API接口的工具。
-
django-ninja-jwt : 为django-ninja提供的JSON Web Token插件,用于实现身份验证等相关功能,是从一个流行的Django Rest Framework插件分支而来。
本文总阅读量次