django-rest-framework VS django-ninja

Compare django-rest-framework vs django-ninja and see what are their differences.


💨 Fast, Async-ready, Openapi, type hints based framework for building APIs (by vitalik)
Our great sponsors
  • InfluxDB - Build time-series-based applications quickly and at scale.
  • Zigi - Close all those tabs. Zigi will handle your updates.
  • Scout APM - Truly a developer’s best friend
  • Sonar - Write Clean Python Code. Always.
django-rest-framework django-ninja
160 44
24,521 3,669
1.4% -
8.5 9.1
4 days ago 7 days ago
Python Python
BSD 3-clause "New" or "Revised" License MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.


Posts with mentions or reviews of django-rest-framework. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-11-25.
  • Hide mysql connection from app users
    2 projects | | 25 Nov 2022
  • Why Domain Driven Design?
    2 projects | | 25 Nov 2022
    > Sure you can do DDD in Django. But I do not find that framework inherently CQRS of SOA (not SOA due to it's monolithic nature).

    Django has "apps", which--while they do run in the same process--aren't intended to use code from each other. They're supposed to have their own models/views/templates/migrations/etc. They're effectively different services, as long as you don't think a service has to be available at a different network address to be a different service (think of mounting different apps or microservices behind different URLs, for example).

    Also, I wouldn't say Django is CQRS--CQRS is more or less a different phrasing of "JSON-RPC", which "REST" has become.

    > Last Django app i saw sure had a lot of this boilerplate going. I saw this talk and thought: well this is finally a "framework" that allowes me to do away with serialization (as in: in this framework the amount of extra work you do for making the app an SPA is fairly minimal):

    Eh, some people are highly allergic to any boilerplate, but like, the DRF example [0] has practically none.

    That Elm video is interesting, but I'm skeptical of anything whose central claim is "I can easily turn front end data requests into SQL and back again in very few lines of code". There's just a lot of inherent complexity there, and my evidence is every mainstream ORM, plus all the "backend-as-a-service" products that are multi-1000s LOC. Then again I think SQL is a great (legendary, honestly) language and we should stop trying to replace it.


  • recommendations for Back End Engineer roadmap?
    2 projects | | 11 Nov 2022
  • What are some libraries/crates that Rust still doesn't have readily available?
    2 projects | | 2 Nov 2022
    +1 for Django. What I'd like to see even more is something that is on-par with Django Rest Framework. This library deals with so much that I had wished that existed in other frameworks in other languages. Viewsets, different parsers, auto-generated API docs, excellent validation guards, authentication and permissions, throttling, filtering, pagination, versioning, many many more, it's just an amazing piece of work.
  • Build Blazing Fast REST Api using Django + Elasticsearch + Haystack
    4 projects | | 22 Oct 2022
    Django REST Framework
  • De/Serializing JSON In Python, While Keeping Your Types
    3 projects | | 10 Oct 2022
    have you seen Django REST?
  • Any alternative to Laravel (PHP) for rapid development?
    4 projects | | 26 Sep 2022
  • Having issues implementing DjangoModelPermissions on DRF
    4 projects | | 19 Sep 2022
    As you can see, GET return an empty list, later it's used to return a boolean to see if the user has permissions ( you can try to play with the codeCustomDjangoModelPermission only add the proper elt for GET (with a deepcopy to avoid modifying the original DjangoModelPermissions). This modification will return false when django will check if an authenticated user without the view permissions can see the instances of the Tool model.
    4 projects | | 19 Sep 2022
    Interesting, it looks like there is a pull request to fix this, but not merged yet.
    4 projects | | 19 Sep 2022
    Ok, first all thank you for the perfect presentation of your issue and the opportunity to learn something new. After looking at the source code of DjangoModelPermissions, it looks like it's working as expected. An authenticated user has by default GET permissions with DjangoModelPermissions. It's surprising and I think the documentation could be clearer, but it does specify :


Posts with mentions or reviews of django-ninja. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2022-10-15.

What are some alternatives?

When comparing django-rest-framework and django-ninja you can also consider the following projects:

fastapi - FastAPI framework, high performance, easy to learn, fast to code, ready for production

fastapi-admin - A fast admin dashboard based on FastAPI and TortoiseORM with tabler ui, inspired by Django admin

drf-spectacular - Sane and flexible OpenAPI 3 schema generation for Django REST framework.

django-tastypie - Creating delicious APIs for Django apps since 2010.

Dependency Injector - Dependency injection framework for Python

openapi-generator - OpenAPI Generator allows generation of API client libraries (SDK generation), server stubs, documentation and configuration automatically given an OpenAPI Spec (v2, v3)

django-modern-rpc - Simple XML-RPC and JSON-RPC server for modern Django

Django - The Web framework for perfectionists with deadlines.

django-template - A battle-tested Django 2.1 project template with configurations for AWS, Heroku, App Engine, and Docker.

connexion - Swagger/OpenAPI First framework for Python on top of Flask with automatic endpoint validation & OAuth2 support

FrameworkBenchmarks - Source for the TechEmpower Framework Benchmarks project