Metadata-Version: 2.4 Name: django-ninja Version: 1.4.0 Summary: Django Ninja - Fast Django REST framework Home-page: https://django-ninja.dev Author: Vitaliy Kucheryaviy Author-email: ppr.vitaly@gmail.com Requires-Python: >=3.7 Description-Content-Type: text/markdown Classifier: Intended Audience :: Information Technology Classifier: Intended Audience :: System Administrators Classifier: Operating System :: OS Independent Classifier: Development Status :: 5 - Production/Stable Classifier: Topic :: Internet Classifier: Topic :: Software Development :: Libraries :: Application Frameworks Classifier: Topic :: Software Development :: Libraries :: Python Modules Classifier: Topic :: Software Development :: Libraries Classifier: Topic :: Software Development Classifier: Typing :: Typed Classifier: Environment :: Web Environment Classifier: Intended Audience :: Developers Classifier: License :: OSI Approved :: MIT License Classifier: Programming Language :: Python :: 3 Classifier: Programming Language :: Python :: 3.7 Classifier: Programming Language :: Python :: 3.8 Classifier: Programming Language :: Python :: 3.9 Classifier: Programming Language :: Python :: 3.10 Classifier: Programming Language :: Python :: 3.11 Classifier: Programming Language :: Python :: 3.12 Classifier: Programming Language :: Python :: 3 :: Only Classifier: Framework :: Django Classifier: Framework :: Django :: 3.1 Classifier: Framework :: Django :: 3.2 Classifier: Framework :: Django :: 4.1 Classifier: Framework :: Django :: 4.2 Classifier: Framework :: Django :: 5.0 Classifier: Framework :: Django :: 5.1 Classifier: Framework :: AsyncIO Classifier: Topic :: Internet :: WWW/HTTP :: HTTP Servers Classifier: Topic :: Internet :: WWW/HTTP License-File: LICENSE Requires-Dist: Django >=3.1 Requires-Dist: pydantic >=2.0,<3.0.0 Requires-Dist: pre-commit ; extra == "dev" Requires-Dist: mkdocs ; extra == "doc" Requires-Dist: mkdocs-material ; extra == "doc" Requires-Dist: markdown-include ; extra == "doc" Requires-Dist: mkdocstrings ; extra == "doc" Requires-Dist: pytest ; extra == "test" Requires-Dist: pytest-cov ; extra == "test" Requires-Dist: pytest-django ; extra == "test" Requires-Dist: pytest-asyncio ; extra == "test" Requires-Dist: psycopg2-binary ; extra == "test" Requires-Dist: mypy==1.7.1 ; extra == "test" Requires-Dist: ruff==0.5.7 ; extra == "test" Requires-Dist: django-stubs ; extra == "test" Project-URL: Documentation, https://django-ninja.dev Project-URL: Repository, https://github.com/vitalik/django-ninja Provides-Extra: dev Provides-Extra: doc Provides-Extra: test SCR-20230123-m1t ^ Please read ^

Fast to learn, fast to code, fast to run

![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). ![Django Ninja REST Framework](docs/docs/img/benchmark.png) **Documentation**: https://django-ninja.dev --- ## Installation ``` 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 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 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): ![Swagger UI](docs/docs/img/index-swagger-ui.png) ## What next? - Read the full documentation here - 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