We had an in-person event in Lawrence, Kansas ten years ago for Django's 10th birthday. The videos of the talks from that event are here: https://pyvideo.org/events/django-birthday.html I celebrated the 20th birthday yesterday by writing up an annotated transcript of my talk from the 10th - it tells Django's origin story: https://simonwillison.net/2025/Jul/13/django-birthday/
I am from the area so was at that event. I still have my bamboo badge. The Documentation as Empathy talk is one that I still think of often. It was fun to hang out with those guys after too. Lovely folk.
Happy 20th Birthday, Django
131–140 of 191 posts
Re: Happy 20th Birthday, Django
#132Earlier quoted context omitted.
Laravel keeps copying Django (I mean it in a good way)
Laravel borrowed much from Rails, Django and others. But unlike them actually moved forward.
Right. I love Python and Django but the "batteries included" claim seems like an anachronism.
Job queues, WebSockets/SSE, setter/modern form rendering, API framework, components, comprehensive CLI, frontend support etc are what the competition have better integrates and/or first party.
Re: Happy 20th Birthday, Django
#133I have moved on to other things since, but I miss it's simplicity and the general "it just works" aspect of the framework.
Re: Happy 20th Birthday, Django
#134Django just works out of the box. And if you hate JS, well… I am glad Django kept at it all these years despite all the JS frameworks gaining (and falling out of) popularity. So thank you to all those who contributed even when it wasn’t so sexy.
Re: Happy 20th Birthday, Django
#135Earlier quoted context omitted.
Django Admin is a bit of a trap though ;) it's powerful enough that you can build an entire application with it, custom views and powerful filtering and ACLs and whatnot, it easily gets 80% of your job done with almost nothing but a declarative DSL. But the remaining 20%? Now you've dug yourself a hole with no recourse but a complete rewrite. It's time/money you would've otherwise spent anyway, but that sunken cost f…
Yep. Unfortunately the trap extends further than just the Django admin site itself. ModelForm and generic views are what power the admin site and they're exposed and you're encouraged to use them. Same with the low level crud permissions it creates. Once junior devs start doing the remaining 20% without rewriting you end up with something really difficult to maintain.
Re: Happy 20th Birthday, Django
#136Out of curiosity, for people who have do projects in both Django and Ruby on Rails, which one would you prefer and why? I learned Python more than 10 years ago, but later chose Rails to be my first web framework to learn, as I also wanted to learn more about Ruby, hence the question.
Neither Python nor Ruby are my main languages. I used to do a lot of Java and the last eight years I'm using Kotlin mostly. But I've done a lot of freelance and consulting projects as well where I'm happy to use whatever people are using there. I did some pyton and typescript+react recently. I've dabbled with a few Go and Scala projects even. And I'll grudgingly admit to having touched some Php even.
So here's my view:
For me, Django is slightly better than Rails because the people seem to prioritize it just being rock solid, stable, and simple. Python isn't the best, or most elegant at anything it does IMHO. But it's always simple and rock solid and I love it for that. That's what makes it a popular choice for non computer scientists working with data, people in university doing whatever, etc. Ruby was always the more esotheric choice. Lots of people obsessing about meta programming, programming esthetics, and changing their mind about how stuff should be done every 3 months. I found rails to be a bit limited and convoluted. Django and rails do similar things in the end.
The last time I did python, I picked Fastapi and ignored Django. Ruby is fine as a language but it seems to have gone out of fashion a bit. The last time I used it I was using Sinatra, not Rails.
I just prefer light weight frameworks. And I'm a bit opinionated on being able to use the full power of SQL and not having to proxy everything I do through some straight jacket ORM framework that does a lot of magical things in some mediocre way. I can create a table myself and mapping rows to objects isn't rocket science. And I'll write and optimize my queries myself. It's not that hard, and it's not consuming a lot of my time generally. So, the value of optimizing that time is not very high too me. The value of changing and optimizing it when I need to is. And so is the value of just doing it right the first time. And LLMs allow me to generate a lot of the boiler plate stuff (because it is so easy and straighforward). And I'm pretty good at abstracting and encapsulating that. ORMs don't really solve a problem I have.
In the same way server side model view controller (rendering HTML and serving it to the browser on every request) went out of fashion ages ago. Most web and mobile apps use APIs instead. And while server side rendering still is a thing these days, I don't really see a big need for that. It's an optimization. And not one I find I need a lot.
And since server side MVC and ORM are the main point of using Rails or Django, I don't really use either a lot these days.
Re: Happy 20th Birthday, Django
#137Earlier quoted context omitted.
Now Phoenix and Elixir are two technologies I love! But theyre admin offering is lacking. (Which is ok today in modern development and things like pgadmin)
Django Admin is a bit of a trap though ;) it's powerful enough that you can build an entire application with it, custom views and powerful filtering and ACLs and whatnot, it easily gets 80% of your job done with almost nothing but a declarative DSL. But the remaining 20%? Now you've dug yourself a hole with no recourse but a complete rewrite. It's time/money you would've otherwise spent anyway, but that sunken cost f…
Re: Happy 20th Birthday, Django
#138Re: Happy 20th Birthday, Django
#139Thank you to all the contributors!
Re: Happy 20th Birthday, Django
#140Love Django + Django-ninja but the clunky and incomplete async support is painful.
What is missing? The ORM works with asyncio, you can have async views, you can have long running connection-oriented async stuff for websockets etc (via django channels). Maybe there is something important that I'm missing but that seems more complete than most async-only frameworks.
In fact if you look at the source there is a lot of async methods in the framework itself which just straight up calls sync_to_async e.g. caching. This doesn't matter as much as hopefully it will get added proper async eventually. But I think believing your requests wont block just because you're using async is a bit naive at this point in Django and the async implementation has been going for years.
Not to mention that the majority of third party libraries lack support for async so you'll probably have to write your own wrappers for e.g. middleware.