Live data from Hacker News

Happy 20th Birthday, Django

djangoproject.com

131–140 of 191 posts

Re: Happy 20th Birthday, Django

#131
post #95
post #37

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.

Thanks for mentioning this talk, very nice to see it laid out.

Re: Happy 20th Birthday, Django

#132
post #11

Earlier 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.

> 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

#133
Django was the first Python framework that made sense to me and that I enjoyed working with. Also got me my first Python job after years of Java development.

I 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

#134
post #81

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

+1! It may not be sexy, but its lindy and worthwhile the time investment. Likely to last 10-20 more years

Re: Happy 20th Birthday, Django

#135
post #90

Earlier 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.

It's not just the junior devs. A client once came to me with something that looked like 99.9% is just ModelForm, some CSS, and money. I should've taken 25% upfront and said no to the increasingly absurd change requests, but oh well.

Re: Happy 20th Birthday, Django

#136

Out 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.

I've dabbled with some ruby and jruby with rails about 12 years ago. It was fine. I used Django briefly around the time 1.0 was about to be released sixteen or so years ago. And I later encountered it again on some different projects.

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

#137
post #90
post #73

Earlier 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…

The Django docs do explicitly state that the admin is just meant for when you need a quick admin dashboard for internal applications. Anything outside of this domain or more complex, you should consider building your own.

Re: Happy 20th Birthday, Django

#139
I started with Django as my first "proper" web framework, have explored quite a few others since but always come back to Django eventually. It's just such a good baseline for a framework, not just in its features, but also in it's strong philosophy (many frameworks I've found lack this, a lot of good ideas but no cohesion between them), stability and perhaps most importantly, it's incredible work on documentation.

Thank you to all the contributors!

Re: Happy 20th Birthday, Django

#140
post #10

Love 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.

There are numerous things still missing in terms of async support. Most notably for me is DB transaction support which leads to most non-safe endpoints running on the shared sync_to_async thread and me having to separate my code into one async function calling another sync function wrapped in sync_to_async.

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.

Post reply on HN