Fast to learn, fast to code, fast to run
  [](https://badge.fury.io/py/django-shinobi) [](https://pepy.tech/project/django-shinobi) [](https://discord.gg/ntFTXu7NNv) # Django Shinobi - Fast Django REST Framework [Documentation](https://pmdevita.github.io/django-shinobi) **Django Shinobi** is a web framework for building APIs with **Django** and Python 3.6+ **type hints**. It's a fork of the fantastic **[Django Ninja](https://github.com/vitalik/django-ninja)** library focused on community-desired features and fixes. Check out the list of [differences](https://pmdevita.github.io/django-shinobi/differences/) if you're coming from Ninja, as well as the [roadmap](https://github.com/pmdevita/django-shinobi/discussions/6)! **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**: The original Ninja project is used by multiple companies on live projects.  **Documentation**: https://pmdevita.github.io/django-shinobi --- ## Installation In your Django project, add Django Shinobi. ``` pip install django-shinobi ``` or start a new project. ```shell pip install django django-shinobi django-admin startproject apidemo ``` ## Usage In your Django project, next to urls.py, create a new file called `api.py`. ```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 hl_lines="3 7" ... 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 Run your Django project ```shell python manage.py runsever ``` Now go to http://127.0.0.1:8000/api/docs You will see the automatic interactive API documentation (provided by Swagger UI or Redoc):  ## What next? - Read the full documentation here - https://pmdevita.github.io/django-shinobi - To support this project, please give star it on Github.  - Share it [via Twitter](https://twitter.com/intent/tweet?text=Check%20out%20Django%20Shinobi%20-%20Fast%20Django%20REST%20Framework%20-%20https%3A%2F%2Fpmdevita.github.io/django-shinobi) - Share your feedback and discuss development on Discord https://discord.gg/ntFTXu7NNv