【Django-ninja】django-ninja的hello world

本文介绍了DjangoNinja,一个利用Django和Python构建API的框架,强调其易用性、高性能和类型提示功能,以及与DjangoORM的良好集成。展示了如何快速开始一个简单的API项目并运行在不同环境。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

django-ninja简介

Django Ninja是一个用于使用Django和Python 3.6+类型提示构建API的Web框架。

主要特点:

易用性:旨在易于使用和直观。

高性能执行:由于Pydantic和异步支持,具有非常高的性能。

编码效率高:类型提示和自动生成文档使您只需专注于业务逻辑。

基于标准:基于API的开放标准:OpenAPI(以前称为Swagger)和JSON Schema。

与Django友好:(显然)与Django核心和ORM良好集成。

开始helloworld

开始一个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运行

测试环境可以直接使用Django自带的web服务器运行。

python manage.py runserver

使用uvicorn运行

生产环境可以使用uvicorn运行支持异步的asgi服务器。

uvicorn apidemo.asgi:application --host 127.0.0.1 --port 8000 --workers 4

 

### Django-Ninja Framework Usage and Documentation Django-Ninja 是一种轻量级框架,旨在简化基于 Django 的 API 开发过程。它通过引入类似于 FastAPI 的声明式风格来增强开发体验[^1]。以下是关于如何使用 Django-Ninja 框架的一些核心概念和功能: #### 安装与配置 要开始使用 Django-Ninja,首先需要安装该库。可以通过 pip 工具完成安装: ```bash pip install django-ninja ``` 接着,在项目的 `settings.py` 文件中注册应用并启用中间件支持: ```python INSTALLED_APPS += ["ninja"] ``` #### 创建第一个 API 定义路由和视图逻辑非常简单。只需继承 `ninja.API` 类即可创建一个新的 API 实例,并将其挂载到 URL 路由上。 下面是一个基本的例子: ```python from ninja import NinjaAPI api = NinjaAPI() @api.get("/hello") def hello_world(request): return {"message": "Hello, world!"} ``` 上述代码片段展示了如何设置一个返回 JSON 响应的基础端点。 #### 数据验证 Django-Ninja 提供内置的数据校验机制,允许开发者轻松处理请求参数以及复杂数据结构的解析工作。可以利用 Pydantic 模型来进行输入数据类型的强制约束。 例如: ```python from ninja import Schema class Item(Schema): name: str description: str = None price: float tax: float = None @api.post("/items/") def create_item(request, payload: Item): return {"item": payload.dict()} ``` 这里我们定义了一个名为 `Item` 的模式类用于接收 POST 请求中的 body 参数。 #### 高效集成 JWT 认证 对于安全性需求较高的场景,Django-Ninja 支持多种身份认证方式,其中包括流行的 JSON Web Token (JWT) 方案。这使得保护敏感资源变得更为便捷高效。 实现方法如下所示: ```python from ninja.security import HttpBearer class AuthBearer(HttpBearer): def authenticate(self, request, token): if token == 'supersecret': return token authenticator = AuthBearer() api = NinjaAPI(auth=authenticator) @api.get('/protected', auth=authenticator) def protected_route(request): return {'status': 'Authorized'} ``` 此部分演示了自定义授权器的设计思路及其实际运用案例。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值