Skip to main content

Test PyPI version PyPI version PyPI version PyPI version Codecov Downloads

Django Ninja Extra

Django Ninja Extra is a complete class-based fashion of building and setting up APIs at incredible speed with incredible performance. It utilizes Django Ninja core features without compromising speed.

Key features:

All Django-Ninja 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.

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 or django_injector. Giving you the ability to inject API dependable services to APIController class and utilizing them where needed

Requirements

  • Python >= 3.6
  • django >= 2.1
  • pydantic >= 1.6
  • Django-Ninja >= 0.16.1

Django-Ninja Benchmark

Django-Ninja-Extra uses Django-Ninja under the hood, it can be assumed that Django-Ninja-Extra has the same benchmark with Django-Ninja Django Ninja REST Framework

Full documentation, visit.

Example

Checkout this sample project: https://github.com/eadwinCode/bookstoreapi

Installation

pip install django-ninja-extra

After installation, add ninja_extra to your INSTALLED_APPS

INSTALLED_APPS = [
    ...,
    'ninja_extra',
]

Usage

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

from ninja_extra import NinjaExtraAPI, api_controller, http_get

api = NinjaExtraAPI()

# function based definition
@api.get("/add", tags=['Math'])
def add(request, a: int, b: int):
    return {"result": a + b}

#class based definition
@api_controller
class MathAPI:

    @http_get('/subtract',)
    def subtract(self, a: int, b: int):
        """Subtracts a from b"""
        return {"result": a - b}

    @http_get('/divide',)
    def divide(self, a: int, b: int):
        """Divides a by b"""
        return {"result": a / b}
    
    @http_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:

...
from django.urls import path
from .api import api

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

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):

Swagger UI

What next?

  • To support this project, please give star it on Github

Release files for django-ninja-extra-easy 0.15.6

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-ninja-extra-easy 0.15.6
File Size Uploaded Provenance Actions
django-ninja-extra-easy-0.15.6.tar.gz 7.3 MB Without provenance Details for django-ninja-extra-easy-0.15.6.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for django-ninja-extra-easy 0.15.6
File Interpreter ABI Platform Actions
django_ninja_extra_easy-0.15.6-py3-none-any.whl Python 3 none any Details for django_ninja_extra_easy-0.15.6-py3-none-any.whl

Total release size: 7.3 MB

Release files / django-ninja-extra-easy-0.15.6.tar.gz

Download URL django-ninja-extra-easy-0.15.6.tar.gz
Size 7.3 MB
Tags Source
SHA-256 checksum
How to use checksums
5952170268adf503247defa3d1c105cf3a69fadb3100dd0f8f8c7b69b5437c55
BLAKE2b-256 checksum
How to use checksums
27801e9bc385fcf36109d9ed73c2b59b4ffb2606d5b65a9ee7810b84b495cb35
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.27.1

Release files / django_ninja_extra_easy-0.15.6-py3-none-any.whl

Download URL django_ninja_extra_easy-0.15.6-py3-none-any.whl
Size 47.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
c0419de6488e74b43bdaba285b04d5739be2e9b119a15dd97fb812b56157d3b0
BLAKE2b-256 checksum
How to use checksums
3957e94dca9c6ca39d1164b4eb7009421db4662a1bb521dc00ed8a84e164d621
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via python-requests/2.27.1

Security for django-ninja-extra-easy 0.15.6

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.15.6 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page