跳转至

Test PyPI version PyPI version PyPI version PyPI version Codecov Downloads

Django Ninja Extra 文档

Django Ninja Extra 提供了一种 基于类 的方法以及额外的功能,这将使用 Django Ninja 加速您的 RESTful API 开发。

主要特点:

全部的 Django-Ninja 特性 :

  • 简单: 设计为易于使用和符合直觉。
  • 快速的执行速度: 多亏了 Pydanticasync 异步支持, 具有非常高的性能。
  • 快速的编码: 类型提示和自动文档让你只需专注于业务逻辑。
  • 基于标准: 基于标准: OpenAPI (以前称为 Swagger) 和 JSON 模式
  • 对 Django 友好: (显然)与 Django 核心和 ORM 有良好的集成。

加上 Extra:

  • 基于类: 以基于类的方式设计你的 API。
  • 权限: 通过在路由级别或控制器级别定义的权限和认证轻松保护访问接口。
  • 依赖注入: 控制器类支持使用 Python Injector 或者 django_injector。让你能够将 API 依赖服务注入到 APIController 类中,并在需要的地方使用它们。

版本依赖

  • Python >= 3.6
  • django >= 2.1
  • pydantic >= 1.6
  • Django-Ninja >= 0.16.1

完整文档, 访问此链接

安装

pip install django-ninja-extra
安装后, 将 ninja_extra 添加到你的 INSTALLED_APPS

INSTALLED_APPS = [
    ...,
    'ninja_extra',
]

使用

在你的 Django 项目中,在 urls.py 旁边创建新的 api.py 文件:

from ninja_extra import NinjaExtraAPI, api_controller, http_get

api = NinjaExtraAPI()

# 基于函数的定义
@api.get("/add", tags=['Math'])
def add(request, a: int, b: int):
    return {"result": a + b}

# 基于类的定义
@api_controller('/', tags=['Math'], permissions=[])
class MathAPI:

    @http_get('/subtract',)
    def subtract(self, a: int, b: int):
        """Subtracts a from b"""
        return {"result": a - b}

    @http_get('/divide',)
    def divide(self, a: int, b: int):
        """Divides a by b"""
        return {"result": a / b}

    @http_get('/multiple',)
    def multiple(self, a: int, b: int):
        """Multiples a with b"""
        return {"result": a * b}

api.register_controllers(
    MathAPI
)

现在转到 urls.py 并添加以下内容:

...
from django.urls import path
from .api import api

urlpatterns = [
    path("admin/", admin.site.urls),
    path("api/", api.urls),  # <---------- !
]

交互 API 文档

现在转到 http://127.0.0.1:8000/api/docs

你将看到自动交互 API 文档 (由 Swagger UI提供):

Swagger UI

Tutorials


本文总阅读量