![Test](https://github.com/eadwinCode/django-ninja-extra/workflows/Test/badge.svg)
[![PyPI version](https://badge.fury.io/py/django-ninja-extra.svg)](https://badge.fury.io/py/django-ninja-extra)
[![PyPI version](https://img.shields.io/pypi/v/django-ninja-extra.svg)](https://pypi.python.org/pypi/django-ninja-extra)
[![PyPI version](https://img.shields.io/pypi/pyversions/django-ninja-extra.svg)](https://pypi.python.org/pypi/django-ninja-extra)
[![PyPI version](https://img.shields.io/pypi/djversions/django-ninja-extra.svg)](https://pypi.python.org/pypi/django-ninja-extra)
# Django Ninja Extra
**Django Ninja Extra** is a utility library built on top of **Django Ninja** for building and setting up APIs at incredible speed and performance. It brings alot batteries to [**Django Ninja**](https://django-ninja.rest-framework.com) which are also extensible for customization.
**Key features:**
All **Django-Ninja** features :
- **Easy**: Designed to be easy to use and intuitive.
- **FAST execution**: Very high performance thanks to **<a href="https://pydantic-docs.helpmanual.io" target="_blank">Pydantic</a>** and **<a href="/async-support/">async support</a>**.
- **Fast to code**: Type hints and automatic docs lets you focus only on business logic.
- **Standards-based**: Based on the open standards for APIs: **OpenAPI** (previously known as Swagger) and **JSON Schema**.
- **Django friendly**: (obviously) has good integration with the Django core and ORM.
Plus **Extra**:
- **Class Based**: Design your APIs in a class based fashion.
- **Permissions**: Protect endpoint(s) at ease with defined permissions and authorizations at route level or controller level.
- **Dependency Injection**: Controller classes supports dependency injection with python [**Injector** ](https://injector.readthedocs.io/en/latest/) or [**django_injector**](https://github.com/blubber/django_injector). Giving you the ability to inject API dependable services at the controller class constructor and utilizing them where needed
---
### Requirements
- Python >= 3.6
- django >= 2.1
- pydantic >= 1.6
- Django-Ninja >= 0.16.1
## Django-Ninja Benchmark
Both Django-Ninja and Django-Ninja-Extra shares the same benchmark because **Django-Ninja-Extra** operational core is **Django-Ninja**
![Django Ninja REST Framework](docs/docs/images/benchmark.png)
Full documentation, [visit](https://eadwincode.github.io/django-ninja-extra/).
## Installation
```
pip install django-ninja-extra
```
After installation, add `ninja_extra` to your `INSTALLED_APPS`
```Python
INSTALLED_APPS = [
...,
'ninja_extra',
]
```
## Usage
In your django project next to urls.py create new `api.py` file:
```Python
from ninja_extra import NinjaExtraAPI, APIController, route, router
api = NinjaExtraAPI()
# function based definition
@api.get("/add", tags=['Math'])
def add(request, a: int, b: int):
return {"result": a + b}
#class based definition
@router('/', tags=['Math'], permissions=[])
class MathAPI(APIController):
@route.get('/subtract',)
def subtract(self, a: int, b: int):
"""Subtracts a from b"""
return {"result": a - b}
@route.get('/divide',)
def divide(self, a: int, b: int):
"""Divides a by b"""
return {"result": a / b}
@route.get('/multiple',)
def multiple(self, a: int, b: int):
"""Multiples a with b"""
return {"result": a * b}
api.register_controllers(
MathAPI
)
```
Now go to `urls.py` and add the following:
```Python
...
from .api import api
urlpatterns = [
path("admin/", admin.site.urls),
path("api/", api.urls), # <---------- !
]
```
### Interactive API docs
Now go to <a href="http://127.0.0.1:8000/api/docs" target="_blank">http://127.0.0.1:8000/api/docs</a>
You will see the automatic interactive API documentation (provided by <a href="https://github.com/swagger-api/swagger-ui" target="_blank">Swagger UI</a>):
![Swagger UI](docs/docs/images/ui_swagger_preview_readme.gif)
## What next?
- To support this project, please give star it on Github
没有合适的资源?快使用搜索试试~ 我知道了~
PyPI 官网下载 | django-ninja-extra-0.12.8.tar.gz
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 93 浏览量
2022-01-10
18:32:54
上传
评论
收藏 3.45MB GZ 举报
温馨提示
共88个文件
py:51个
md:16个
yml:4个
资源来自pypi官网。 资源全名:django-ninja-extra-0.12.8.tar.gz
资源推荐
资源详情
资源评论
收起资源包目录
django-ninja-extra-0.12.8.tar.gz (88个子文件)
django-ninja-extra-0.12.8
setup.py 1KB
.gitignore 108B
Makefile 944B
pyproject.toml 2KB
.dockerignore 64B
.isort.cfg 52B
LICENSE 1KB
.github
workflows
test_full.yml 1KB
test.yml 530B
publish.yml 594B
README.md 4KB
PKG-INFO 6KB
tests
test_route.py 12KB
test_event_controller.py 2KB
conftest.py 2KB
test_controller_router.py 2KB
urls.py 293B
__init__.py 0B
controllers.py 937B
test_lazy_import.py 460B
test_shortcuts.py 2KB
models.py 495B
utils.py 1KB
test_controller.py 6KB
test_api_instance.py 2KB
test_django_model.py 946B
test_permissions.py 8KB
test_dependency_resolver.py 956B
test_operation.py 2KB
test_pagination.py 6KB
test_settings.py 1KB
pytest.ini 61B
.flake8 120B
docs
requirements.txt 41B
Makefile 249B
mkdocs.yml 2KB
docs
images
pagination.gif 1.25MB
benchmark.png 51KB
ui_swagger_preview_readme.gif 1.41MB
custom_exception.gif 1.05MB
index.md 4KB
service_module_injector.md 5KB
tutorial
authentication.md 1KB
index.md 3KB
api_controller_permission.md 2KB
body_request.md 1KB
pagination.md 889B
custom_exception.md 862B
api_controller.md 4KB
api_controller_router.md 2KB
api_controller_route.md 4KB
testing.md 2KB
settings.md 932B
versioning.md 2KB
ninja_schema.md 797B
ninja_extra
dependency_resolver.py 1KB
signals.py 103B
urls.py 1KB
__init__.py 658B
types.py 253B
schemas
__init__.py 200B
response.py 2KB
operation.py 6KB
testing
__init__.py 112B
client.py 2KB
apps.py 1KB
py.typed 0B
permissions
__init__.py 281B
base.py 4KB
common.py 2KB
shortcuts.py 2KB
status.py 2KB
conf
__init__.py 55B
settings.py 2KB
pagination.py 6KB
controllers
route
__init__.py 11KB
route_functions.py 6KB
context.py 480B
__init__.py 644B
base.py 8KB
response.py 3KB
router.py 4KB
modules.py 1KB
main.py 4KB
logger.py 69B
lazy.py 704B
exceptions.py 2KB
mypy.ini 361B
共 88 条
- 1
资源评论
挣扎的蓝藻
- 粉丝: 12w+
- 资源: 15万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功