---
name: django-ninja
summary: "django-ninja is an open-source Python project with 9.1k GitHub stars. It is associated with django, django-ninja, openapi, pydantic. The repository is actively maintained, with recent commits."
language: Python
license: MIT
repo: https://github.com/vitalik/django-ninja
source: https://opensources.dev/resource/django-ninja
health: 100
---

# django-ninja

django-ninja is an open-source Python project with 9.1k GitHub stars. It is associated with django, django-ninja, openapi, pydantic. The repository is actively maintained, with recent commits.

^ Please read ^

![Test](https://github.com/vitalik/django-ninja/actions/workflows/test_full.yml/badge.svg)
![Coverage](https://img.shields.io/codecov/c/github/vitalik/django-ninja)
[![PyPI version](https://badge.fury.io/py/django-ninja.svg)](https://badge.fury.io/py/django-ninja)
[![Downloads](https://static.pepy.tech/personalized-badge/django-ninja?period=month&units=international_system&left_color=black&right_color=brightgreen&left_text=downloads/month)](https://pepy.tech/project/django-ninja)

# Django Ninja - Fast Django REST Framework

**Django Ninja** is a web framework for building APIs with **Django** and Python 3.6+ **type hints**.

**Key features:**

- **Easy**: Designed to be easy to use and intuitive.
- **FAST execution**: Very high performance thanks to **Pydantic** and **async support**.
- **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.
- **Production ready**: Used by multiple companies on live projects (If you use django-ninja and would like to publish your feedback, please email [ppr.vitaly@gmail.com](mailto:ppr.vitaly@gmail.com)).

![Django Ninja REST Framework](docs/docs/img/benchmark.png)

**Documentation**: [https://django-ninja.dev](https://django-ninja.dev)

---

## Installation

```tsx
pip install django-ninja
```

## Usage

In your django project next to urls.py create new `api.py` file:

```Python
from ninja import NinjaAPI

api = NinjaAPI()

@api.get("/add")
def add(request, a: int, b: int):
    return {"result": a + b}
```

Now go to `urls.py` and add the following:

```Python
...
from .api import api

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

**That's it !**

Now you've just created an API that:

- receives an HTTP GET request at `/api/add`
- takes, validates and type-casts GET parameters `a` and `b`
- decodes the result to JSON
- generates an OpenAPI schema for defined operation

### Interactive API docs

Now go to [http://127.0.0.1:8000/api/docs](http://127.0.0.1:8000/api/docs)

You will see the automatic interactive API documentation (provided by Swagger UI or Redoc):

![Swagger UI](docs/docs/img/index-swagger-ui.png)

## Sponsors

Become a sponsor

## What next?

- Read the full documentation here - [https://django-ninja.dev](https://django-ninja.dev)
- To support this project, please give star it on Github. ![github star](docs/docs/img/github-star.png)
- Share it [via Twitter](https://twitter.com/intent/tweet?text=Check%20out%20Django%20Ninja%20-%20Fast%20Django%20REST%20Framework%20-%20https%3A%2F%2Fdjango-ninja.dev)
- If you already using django-ninja, please share your feedback to [ppr.vitaly@gmail.com](mailto:ppr.vitaly@gmail.com)
