HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
encode
django-rest-framework
Python2012–2025
encode / django-rest-framework

django-rest-framework

Web APIs for Django. 🎸

13Distinct people
16Mentions
1Explicit recommenders
30.2KGitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Web APIs for Django. 🎸

GitHub

Where it is used

No documented product use was verified in the last source check.

What people are saying

I love Django but the REST API situation is embarrassing. I’ve been moving projects along for decades and the only things that have ever had to be completely rewritten are the…

miiiiiike used a recommendation phrase. One indexed comment matches. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 12:54:37 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by year16 dated mentions

Observed mentions: 2012-04-15 04:21:09 UTC to 2025-03-28 22:42:32 UTC.

01232012-01-01 00:00:00 UTC to 2013-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments20122013-01-01 00:00:00 UTC to 2014-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2014-01-01 00:00:00 UTC to 2015-01-01 00:00:00 UTC (exclusive): 3 mentions; 1 submissions, 2 comments2015-01-01 00:00:00 UTC to 2016-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2016-01-01 00:00:00 UTC to 2017-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2017-01-01 00:00:00 UTC to 2018-01-01 00:00:00 UTC (exclusive): 2 mentions; 1 submissions, 1 comments2018-01-01 00:00:00 UTC to 2019-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments20182019-01-01 00:00:00 UTC to 2020-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2020-01-01 00:00:00 UTC to 2021-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2021-01-01 00:00:00 UTC to 2022-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2022-01-01 00:00:00 UTC to 2023-01-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2023-01-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 3 mentions; 0 submissions, 3 comments2024-01-01 00:00:00 UTC to 2025-01-01 00:00:00 UTC (exclusive): 1 mentions; 1 submissions, 0 comments2025-01-01 00:00:00 UTC to 2026-01-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2025

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
20122012-01-01 00:00:00 UTC2013-01-01 00:00:00 UTC303
20132013-01-01 00:00:00 UTC2014-01-01 00:00:00 UTC101
20142014-01-01 00:00:00 UTC2015-01-01 00:00:00 UTC312
20152015-01-01 00:00:00 UTC2016-01-01 00:00:00 UTC000
20162016-01-01 00:00:00 UTC2017-01-01 00:00:00 UTC101
20172017-01-01 00:00:00 UTC2018-01-01 00:00:00 UTC211
20182018-01-01 00:00:00 UTC2019-01-01 00:00:00 UTC000
20192019-01-01 00:00:00 UTC2020-01-01 00:00:00 UTC000
20202020-01-01 00:00:00 UTC2021-01-01 00:00:00 UTC101
20212021-01-01 00:00:00 UTC2022-01-01 00:00:00 UTC000
20222022-01-01 00:00:00 UTC2023-01-01 00:00:00 UTC000
20232023-01-01 00:00:00 UTC2024-01-01 00:00:00 UTC303
20242024-01-01 00:00:00 UTC2025-01-01 00:00:00 UTC110
20252025-01-01 00:00:00 UTC2026-01-01 00:00:00 UTC101

What Hacker News says

16 sources
miiiiiike¡Mar 28, 2025Recommendation phrase
I love Django but the REST API situation is embarrassing. I’ve been moving projects along for decades and the only things that have ever had to be completely rewritten are the REST APIs and their tests. Piston, Tastypie, a custom framework, Django Rest Framework, and now what? Ninja? Shinobi? Each one has stalled out in its own way and all have failed to keep up with the rest of Django. (e.g. async REST API views should NOT require another, fourth-party, library.) I’ve been beating this drum for a decade now. Django needs “django.contrib.rest”. REST API frameworks have always been too important to leave to third-party maintainers. They need to be maintained in the core. I just want something that feels like Django and doesn’t change. Unfortunately I think Django has been debating something as fundamental as content negotiation, the first
Read the rest
step towards supporting this is core, for over a decade now. If it’s a money issue I’d be thrilled to donate $5k tomorrow. I also have a JWT auth package that I could contribute. Unfortunately there appears to be little to no appetite for any of it. I've considered donating to encode, DRF's parent organization, most of their effort is directed towards Starlette, an async framework that competes with Django. It even powers FastAPI. Encode has put enormous effort into making everything but Django Rest Framework support async. I don't get mad about much in open source but this has been an obvious risk for over a decade. The steering council should should have spotted the iceberg and started turning the ship long ago. Removing the bug tracker and burying the announcement that the project is looking for a new maintainer in an unrelated PR comment is a too much: https://github.com/encode/django-rest-framework/pull/9186#is... > The issues backlog had become overwhelmed to the point that it presented as a smokey all-boys club. Unless we've got a welcoming & diverse environment to work in, there's no point in doing the work. It'd be damaging rather than constructive to allow that to continue. The project is open to new maintainership & genuine parties are welcome to reach out. [Two Hearts Emoji — https://emojipedia.org/two-hearts] At the very least I should have found out about this from an announcement, not by rummaging around after checking in on the status of a long-standing bug and getting a 404.
In Django's REST (Framework) Problem
nbrad¡Jan 27, 2024Submission

Ask HN: Is Python async/await some kind of joke?

Returning to Python full-stack development after a stint with Node, it seems like using async/await is not widely adopted enough in the Python ecosystem to actually use? In no particular order - Django doesn’t have an async ORM? (https://docs.djangoproject.com/en/5.0/topics/async/) - Django Rest Framework has no async support? https://github.com/encode/django-rest-framework/issues/7260 - SQLModel’s section on async support basically says “docs coming soon”? Yet this is designed to be used with FastAPI? Why would the docs not start with async/await? https://sqlmodel.tiangolo.com/advanced/ - SqlAlchemy/asyncpg => you can’t use it if you’re using PgBouncer (necessary most of the time with Postgres) in transaction mode? What?? https://github.com/MagicStack/asyncpg/issues/1058 - Ubiquitous “requests” library used in most docs examples, no asyn
Read the rest
c support https://github.com/psf/requests - Top package for GitHub REST API, no async support https://github.com/PyGithub/PyGithub - …on and on… What’s the point of my nice FastAPI server if nothing internally can use async/await? How is everyone else doing this? /rant
8 points ¡ Open discussion
I wish Django would take async more seriously. This comment gives a pretty good overview of the current situation (some points are more valid than others): https://github.com/encode/django-rest-framework/discussions/... The Python ecosystem is strange. Where other dev communities will embrace new ways of doing things faster than most people can keep up — the Python community needs to be pulled kicking and screaming into the light once ever decade or so. Python 2 to 3, ~10 years. async/await has been in Python since 2015, it feels like it's going to be another 5 years before we see people taking async seriously in the big packages. Same problem we had during the 2/3 transition. No library support, no developer support.
In FastAPI 0.100.0 release notes
for those wishing to use http3 with a Python web framework, the ASGI hypercorn[1] currently supports it. made a Django example last week with a sample client based on the examples from aioquic[2]: https://github.com/djstein/django-http3-example this example also includes the first pass at async Django REST Framework using adrf[3] based on these GitHub issues: - https://github.com/encode/django-rest-framework/pull/8617 - https://github.com/encode/django-rest-framework/issues/8496 sources [1]: https://github.com/pgjones/hypercorn [2]: https://github.com/aiortc/aioquic [2]: https://github.com/em1208/adrf
In Granian – a Rust HTTP server for Python applications
All these arguments seem like lowly excuses to not do proper work and instead blame the framework you are using. If you have any kind of interactiveness the feel of a fat client is so much better then template rendering. Look at the site: https://sourcegraph.com/github.com/tomchristie/django-rest-f...? Is that the best interface you can get? In 2014 everything I click reloads the page? a tabbed interface that doesn't load the content in the window is noticeable by users these days. No pop ups of any kind? why do I need to reload the page to see a list of 4 contributers. You've gained maintainability at the cost of user experience, a lot of user experience for very little maintainability. There are sites that benefit little from client-side rendering- blogs and news site for instance, but most will gain a lot. 1) Indexing with PhantomJs is
Read the rest
a breeze, truely. Not only are there a ton of libraries that already do it, there are even SAASes that will do it for you for a fee. If you are really unable to come to terms with this, you can use react.js, which solve the SEO indexing issue completely. 2) If the only thing that you are doing on the site is measuring page loads then your site either lacks interactiveness completely or you aren't measuring everything you should. You aren't measuring to where a user left your site (and incredibly important metric) or any action he does (assuming there is any he can do) that isn't navigation. With Angularytics (and a thousand other libraries) adding analytics is maybe 5 lines of code, and you get declarative analytics on any link you want. 3) This site's js is neither minimized nor concatenated, so I'm not sure what build tools you need for angular either then the ability to serve static content? But in any case it's js, you are going to need to minimize and concatenate it at some point for performance, doesn't matter if you use a fat client or some custom jQuery plugin. Even with Grunt, though I don't like it very much, the build file is maybe 10 lines long, and the build process takes miliseconds. 4) And the alternative is what? using manual QA on every build? You have a website with even minimal interactivity you are going to need to use a browser based testing solution. Karma is a breeze, and with the new setup, the only thing you need to install is node and karma. Takes exactly 3 seconds, and you get one of the best isolated unit testing framework for client side code. Angular is actually built around the ability to unit test it. 5) So your saying that the solution to slowness is to have 43 unique resources loaded and rendered on every navigation? Page reload slowness is one of the major hassles that Ajax, and fat clients as a consequence, are trying to overcome. Your site takes, to me, about 3 seconds to load from page to page (6 seconds to finish rendering), there is obviously no wait time indicator that you can add and no tricks to minimize this. Not to mention that rendering is slow, and server-side rendering is not only extremely slow it can also cause parallel load which will make things worse. If you don't care about your speed it doesn't matter what framework you use. For the sake of this you are losing interactiveness, speed and lower bandwidth to name just a few.
In Why we left AngularJS
Author here... The boilerplate comment is definitely valid, and is pretty much what this release was intended to address. We've now introduced ViewSets (an extension of class based views that is similar to Rail's controllers) and Routers, which make it super quick and easy to get your API up and running. The updated README should give you a good idea how simple the APIs can be now: https://github.com/tomchristie/django-rest-framework I get the impression that what TastyPie does really well is convention-over-configuration - making a bunch of really sensible design decisions on your behalf. What (I hope) REST framework does really well is staying close to Django's conventions, and being easy to customize all the way through, plus of course the browseable API. Either way, there's certainly plenty of folks happy with both frameworks.
In Django REST framework 2.3 released: ViewSets and Routers
If using the generic CBVs you can override .get_queryset() to implement filtering just as you would with regular Django CBVs. There's also an outstanding pull req to build in support for django-filter and other filtering backends which now just needs some docs, and which I plan to have merged in within the next few days or so. https://github.com/tomchristie/django-rest-framework/pull/29... That'll make it easier to do more complex filtering stuff. (And eventually have the filters be presented in the Browsable API)
In REST framework 2 released: Simple, beautiful, browsable Web APIs for Django

Showing the 15 most recent of 16 sources. Enable JavaScript to search and browse every indexed mention.

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.