{"slug": "django-ninja", "name": "django-ninja", "category": "dev-libs", "category_name": "Libraries and frameworks", "description": "", "recommenders": 6, "commenters": 8, "warners": 0, "score": 5.633, "rising": -0.64, "first": "2025-12-13", "latest": "2026-08-12", "why": "it's the best thing happen to my 12 years Django career", "why_is_quote": true, "has_verdict": false, "sentiment": {"recommend": 6, "neutral": 1, "compare": 1, "warn": 0}, "spark": [0, 1, 2, 0, 1, 1, 0, 0, 0, 1, 0, 0], "listed": true, "loved": [], "caveat": "", "short_quote": "it's the best thing happen to my 12 years Django career", "kind": "", "icon": false, "domain": "django-ninja.dev", "github_repo": null, "official_url": "https://django-ninja.dev", "pricing": "", "aliases": ["django-ninja", "Django Ninja"], "verdict": null, "praise": [{"label": "", "summary": "", "quotes": [{"id": 788432240, "item_id": 49277015, "url": "https://news.ycombinator.com/item?id=49277015", "by": "aitchnyu", "date": "2026-08-12", "version": null, "stance": "recommend", "quote": "I use Django Ninja, Zod, InertiaJS+Vue and its as easy as using Django's templating engine", "excerpt": "I like the Vue/React/Svelte model of the DOM being a function of the data. For example, in a shopping cart, I add two chocolates, the number against the chocolate, the count at top and a banner encouraging me to reach X total all center around a data structure. I use Django Ninja, Zod, InertiaJS+Vue and its as easy as using Django's templating engine, but static typing ensures my view doesnt emit unrepresentable data", "context": "", "use_case": "web backend API", "switched_from": "", "story": "HTML over WebSockets: real-time SPAs with barely any JavaScript"}, {"id": 764051937, "item_id": 47753246, "url": "https://news.ycombinator.com/item?id=47753246", "by": "vanflymen", "date": "2026-04-13", "version": null, "stance": "recommend", "quote": "Thin django-ninja routes give you input validation and OpenAPI for free", "excerpt": "I've been building in Django for a long time and I love the framework, but some things have always bugged me: - Typing is exceptionally painful...and getting proper type safety across a Django project is a fight - the ORM leaks throughout your project: it's easy to chain ORM methods in a view, a serializer, a template tag, a Celery task, etc and N+1s end up being difficult to find - models become god objects: custom ", "context": "", "use_case": "API routes", "switched_from": "", "story": "Show HN: 15 yrs of Django in prod: patterns I keep using (agent skills)"}, {"id": 758589008, "item_id": 47411813, "url": "https://news.ycombinator.com/item?id=47411813", "by": "outlines", "date": "2026-03-17", "version": null, "stance": "recommend", "quote": "I found it to be a big help personally", "excerpt": "This is pretty similar to what django-ninja offers as well with their Schema modeling [1]. I found it to be a big help personally and always wanted something for fastapi. Django-ninja is essentially the fastapi of the django world so this library would be enough for me to go all in on fastapi. I just never felt like I found a python orm with the level of ergonomics of django + async of modern python [1] https://djang", "context": "", "use_case": "Schema modeling for Django APIs", "switched_from": "", "story": "Show HN: Oxyde \u2013 Pydantic-native async ORM with a Rust core"}, {"id": 748848304, "item_id": 46803019, "url": "https://news.ycombinator.com/item?id=46803019", "by": "selcuka", "date": "2026-01-28", "version": null, "stance": "recommend", "quote": "It plays nicely with all parts of Django, including the ORM.", "excerpt": "> Coming to a FastAPI app with alembic and finding a lot of that is build-it-yourself (and easily break it) is a bit of a shock. I briefly played with FastAPI, and after the same shock I discovered Django-Ninja [1]. It's modeled after FastAPI and async-capable (if you are inclined, but warning, there be dragons). It plays nicely with all parts of Django, including the ORM. [1] https://django-ninja.dev/", "context": "", "use_case": "Django API framework", "switched_from": "", "story": "Notes on Starting to Use Django"}, {"id": 748705824, "item_id": 46794114, "url": "https://news.ycombinator.com/item?id=46794114", "by": "dgroshev", "date": "2026-01-28", "version": null, "stance": "recommend", "quote": "django-ninja is a great alternative to DRF, precisely because it's so thin, unlike DRF", "excerpt": "In my experience, django-ninja is a great alternative to DRF, precisely because it's so thin, unlike DRF.", "context": "", "use_case": "", "switched_from": "", "story": "Notes on Starting to Use Django"}]}], "caveats": [], "who": [], "tags": [], "use_cases": ["web backend api", "api routes", "schema modeling for django apis", "django api framework", "building apis in django"], "compared": [{"slug": "django", "name": "Django", "co": 4, "switched_from": 0, "switched_to": 0}, {"slug": "react", "name": "React", "co": 2, "switched_from": 0, "switched_to": 0}, {"slug": "fastapi", "name": "FastAPI", "co": 2, "switched_from": 0, "switched_to": 0}], "makers": [], "threads": [{"url": "https://news.ycombinator.com/item?id=46788384", "title": "Notes on Starting to Use Django", "mentions": 2}, {"url": "https://news.ycombinator.com/item?id=49275335", "title": "HTML over WebSockets: real-time SPAs with barely any JavaScript", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=49067301", "title": "Removing React.js from the codebase and adapting Htmx for UI interactivity", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47753245", "title": "Show HN: 15 yrs of Django in prod: patterns I keep using (agent skills)", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=47364260", "title": "Show HN: Oxyde \u2013 Pydantic-native async ORM with a Rust core", "mentions": 1}, {"url": "https://news.ycombinator.com/item?id=46845146", "title": "item 46845146", "mentions": 1}], "sentiment_by_month": {"2025-11": {}, "2025-12": {"recommend": 1}, "2026-01": {"recommend": 2}, "2026-02": {"neutral": 1}, "2026-03": {"recommend": 1}, "2026-04": {"recommend": 1}, "2026-05": {}, "2026-06": {}, "2026-07": {"compare": 1}, "2026-08": {"recommend": 1}, "2026-09": {}, "2026-10": {}}, "versions": [], "version_unnamed": 0, "family_ref": null, "runs_on": null, "lines": [], "quotes": [{"id": 788432240, "item_id": 49277015, "url": "https://news.ycombinator.com/item?id=49277015", "by": "aitchnyu", "date": "2026-08-12", "version": null, "stance": "recommend", "quote": "I use Django Ninja, Zod, InertiaJS+Vue and its as easy as using Django's templating engine", "excerpt": "I like the Vue/React/Svelte model of the DOM being a function of the data. For example, in a shopping cart, I add two chocolates, the number against the chocolate, the count at top and a banner encouraging me to reach X total all center around a data structure. I use Django Ninja, Zod, InertiaJS+Vue and its as easy as using Django's templating engine, but static typing ensures my view doesnt emit unrepresentable data", "context": "", "use_case": "web backend API", "switched_from": "", "story": "HTML over WebSockets: real-time SPAs with barely any JavaScript"}, {"id": 785136227, "item_id": 49071014, "url": "https://news.ycombinator.com/item?id=49071014", "by": "hazrmard", "date": "2026-07-27", "version": null, "stance": "compare", "quote": "django-ninja (https://django-ninja.dev/)", "excerpt": "Using Django w/ frontend frameworks has been a struggle for me. (I only dabble as a hobbyist.) I think splitting the backend off into a restful API makes the marriage work. I've looked at django-rest-framework (https://www.django-rest-framework.org/) and django-ninja (https://django-ninja.dev/). Of course,, then you're discarding a lot of batteries that come with the django framework. Perhaps using Django templates f", "context": "", "use_case": "", "switched_from": "", "story": "Removing React.js from the codebase and adapting Htmx for UI interactivity"}, {"id": 764051937, "item_id": 47753246, "url": "https://news.ycombinator.com/item?id=47753246", "by": "vanflymen", "date": "2026-04-13", "version": null, "stance": "recommend", "quote": "Thin django-ninja routes give you input validation and OpenAPI for free", "excerpt": "I've been building in Django for a long time and I love the framework, but some things have always bugged me: - Typing is exceptionally painful...and getting proper type safety across a Django project is a fight - the ORM leaks throughout your project: it's easy to chain ORM methods in a view, a serializer, a template tag, a Celery task, etc and N+1s end up being difficult to find - models become god objects: custom ", "context": "", "use_case": "API routes", "switched_from": "", "story": "Show HN: 15 yrs of Django in prod: patterns I keep using (agent skills)"}, {"id": 758589008, "item_id": 47411813, "url": "https://news.ycombinator.com/item?id=47411813", "by": "outlines", "date": "2026-03-17", "version": null, "stance": "recommend", "quote": "I found it to be a big help personally", "excerpt": "This is pretty similar to what django-ninja offers as well with their Schema modeling [1]. I found it to be a big help personally and always wanted something for fastapi. Django-ninja is essentially the fastapi of the django world so this library would be enough for me to go all in on fastapi. I just never felt like I found a python orm with the level of ergonomics of django + async of modern python [1] https://djang", "context": "", "use_case": "Schema modeling for Django APIs", "switched_from": "", "story": "Show HN: Oxyde \u2013 Pydantic-native async ORM with a Rust core"}, {"id": 749522353, "item_id": 46845147, "url": "https://news.ycombinator.com/item?id=46845147", "by": "caspel26", "date": "2026-02-01", "version": null, "stance": "neutral", "quote": "Built on Django Ninja with full async support.", "excerpt": "I built this to eliminate the CRUD boilerplate I was writing over and over in Django projects. The core idea: define schemas on your Django models, register a ViewSet, and get complete async CRUD endpoints with filtering, pagination, auth, and M2M management. Example: ```python class Book(ModelSerializer): title = models.CharField(max_length=120) class ReadSerializer: fields = [\"id\", \"title\"] class CreateSerializer: ", "context": "", "use_case": "", "switched_from": "", "story": null}, {"id": 748848304, "item_id": 46803019, "url": "https://news.ycombinator.com/item?id=46803019", "by": "selcuka", "date": "2026-01-28", "version": null, "stance": "recommend", "quote": "It plays nicely with all parts of Django, including the ORM.", "excerpt": "> Coming to a FastAPI app with alembic and finding a lot of that is build-it-yourself (and easily break it) is a bit of a shock. I briefly played with FastAPI, and after the same shock I discovered Django-Ninja [1]. It's modeled after FastAPI and async-capable (if you are inclined, but warning, there be dragons). It plays nicely with all parts of Django, including the ORM. [1] https://django-ninja.dev/", "context": "", "use_case": "Django API framework", "switched_from": "", "story": "Notes on Starting to Use Django"}, {"id": 748705824, "item_id": 46794114, "url": "https://news.ycombinator.com/item?id=46794114", "by": "dgroshev", "date": "2026-01-28", "version": null, "stance": "recommend", "quote": "django-ninja is a great alternative to DRF, precisely because it's so thin, unlike DRF", "excerpt": "In my experience, django-ninja is a great alternative to DRF, precisely because it's so thin, unlike DRF.", "context": "", "use_case": "", "switched_from": "", "story": "Notes on Starting to Use Django"}, {"id": 740085264, "item_id": 46255329, "url": "https://news.ycombinator.com/item?id=46255329", "by": "novoreorx", "date": "2025-12-13", "version": null, "stance": "recommend", "quote": "it's the best thing happen to my 12 years Django career", "excerpt": "https://django-ninja.dev/ should be mentioned in this discussion, it's the best thing happen to my 12 years Django career", "context": "", "use_case": "Building APIs in Django", "switched_from": "", "story": "Django 6"}]}