In a very real sense, I have Django to thank for my entire career. As an undergraduate, my first academic job in a research lab had me building websites to promote the research in a lab. Django was brand new, and I was uninterested in petty concerns like stability and security, so I did everything in Django.
Years later (2009), I got to do interesting work in a cutting edge machine learning lab due to the expertise I developed in Django -- I was accepted into the lab specifically to clean up the mess phd students had made trying to build a complex front end using Django's ORM with physically separate per-user MySQL database servers.
All the things that came after -- being the first full time employee at a machine learning spinout from the lab, getting acquired by a big company and scaling up sensor-driven ML in the real world, quitting to co-found an ML-centered VC fund, starting a (now 10 year old) AI company -- none of it would have happened without Django.
I also started my programming career thanks to Django, and I started using it while working at a local newspaper, so bonus points there! We built a system that our sales people could book ads, and then we could layout the newspaper through a canvas based tool (used Fabric.js for that), and then send the pages + ad stack to InDesign to be built. Was great to work with the whole process and Django was really never a limitation. I ended up moving on, but it'll always have a place in my heart.
Same here! Django was not only the first piece of software that allowed me to do real freelancing and software development, but also exposed me to high-quality Python source code and development practices taken from the development team.
Same here. Built first web application in Django, have tried all the other frameworks over the years, and am now back to building another webapp in Django...
20 years is an eternity in web development, and Django's longevity is a testament to its brilliant design philosophy. Happy birthday to the framework that gets things done.
Django is pragmatic, secure, and unbelievably stable. It's the framework you choose when you want to build a real business, not just chase the latest trend. It has powered some of the biggest sites on the web, and it's still the best choice for a huge number of projects.
I'm a really happy Django user for 15 years and hopefully I'll still use it for at least another 15!
Django has a lot of beloved features but I think one of the most important is it's stability through the years: I actually have production apps that started on Django 1.4 and python 2.6 and now are updated and with with Django 5 and python 3.13.
All this without too much effort on my side or paying companies to support my projects.
I first started using Django in 2006, v0.95, the "magic removal" release. I was 19 and doing PHP at a small startup. I'd heard the hype around Rails, and wanted to check it out. Several hours and many head-desk moments later, I still couldn't get everything set up properly on my laptop (running Ubuntu). In my research, I discovered Python and Django and decided to give it a whirl. Twenty minutes later, I had the Django Hello Word page on my screen, and I haven't looked back since.
It wasn't long before newforms became a thing, and the 1.0 release, lots of cool database features, migrations (I remember debating South vs. Nashvegas at work), class-based views (amazing!), Postgres-specific features (built-in JSONField, finally!), Py3k support, ASGI... It's been a long, cool, productive road.
I was at the first DjangoCon in 2008 (leaving my wife at home with our two month old!), and giving a conference talk for the first time a decade later at DjangoCon 2018.
I owe my career to Django. It has been my framework of choice for projects large and small, and I've always felt solid in that decision -- thanks in no small part to the community.
I also started my career with Django using 0.96 in college and 1.1/1.2 with my first industry jobs. It was a really empowering framework and it is surprising to me that I still pick it up today for new projects when appropriate. I started attending the Seattle Django Users Group and discovered there were a decent number of "ex-pats" from the Lawrence Journal-World who were there as it was being developed.
Before I knew it I was helping organize the user group including our weekly coffee shop meetups in addition to the monthly lecture gatherings. There were a lot of local startups (including some very well known businesses and non-profits today) very actively collaborating on these tools. Django was really evolving the way a lot of companies used software and automation.
It wasn't only the engineering, the community ethos of Django both at the local and international scale (and the Python community as a whole) really made it possible to branch out and accelerate my personal software engineering journey.
I've worked in Django across most of my career at a few places for many years.
Every time I work with another framework I am reminded of how well Django has adhered to initial principles (batteries included) while adapting to changes with new technologies.
It has a great community behind it and for that to exist for so long is something remarkable. Other frameworks have advantages in some places. But for overall tooling I think it still is the best choice for anything large and complex yet not a bad choice for micro projects either.
Working with Django for the past 15 years has been a pleasure. Joining the community was a revelation. Serving on the board and as president of the DSF was a privilege. I look forward to 20 more years of code and community.
My favourite thing about Django is the versioned documentation. Land on a page - any page - and you can trivially read the docs on that subject all the way back to 1.8. That's ten years old. And it works, because Django knows how to patiently deprecate APIs and migrate things. They built one docs site, and it still works. It didn't bitrot. The URLs haven't changed. They didn't restructure everything and force people to rewrite their entire projects or be judged quietly. Every single time I end up working with a framework where docs are littered across a handful of different websites for different versions and types of docs or whatever, I think of Django and I wonder why people have such terrible taste.
Alas, that tends to be the majority of my experience with Django. Using it for one-off personal projects and quietly wishing for the current new shiny JavaScript thing to go away. It still feels like home, but most of my time is somewhere else.
The only issues I see with Django these days are a lack of native python types and especially these days with type hints included in the language I think there should be efforts taken to have this present within the framework itself. I know there's packages that provide it but I'd prefer if it was coming from Django itself.
Otherwise it's a fantastic framework that's extremely flexible and a joy to work with most of the time. Due to its longevity, it has such a rich ecosystem that's enviable and only mirrored by the likes of rails.
Yeah, to have a properly typed codebase I'm basically isolating the ORM and models from the rest of our app. So there is a selector layer that fetches data, and then maps that do dataclasses/pydantic, instead of passing the django model objects around.
It's a good practice anyways I feel, as the application grows you don't want different "apps" to know too much about models in other apps.
But even with this flow, in my selector layer I still have to do "# type: ignore" any time I've used an annotation. Especially due to python's lacking lambdas, when I map data from a queryset it often has to be a properly defined function, but then whatever annotation django-stubs managed to apply is lost anyways.
It's nice to see software last like this. Some personal anecdotes
Back in the day, when I was first picking up on frameworks, I saw Django and TurboGears. A friend of mine went with Django while I went with TG. I don't really know what the status of TG is anymore but back then, I thought SQLObject, Mochikit etc. were awesome. I think I took the wrong fork in the road then.
I once attended a "web" panel at PyCon India where there was a discussion between proponents of various frameworks. The Django guy had a nice quote - "I don't know what the standard Python web framework of Python will look like in another 20 years but I'm quite sure that it will be called Django". His point was about the longevity of the project and it's ability to adapt.
I’ve used Django since 0.96 and keep coming back to it any time I need a web site that works. I’ve dabbled in other stuff but this one just clicks for me.
This funding gap highlights the persistent challenge of sustainability in open source - Django powers billions in business value but struggles to secure a fraction of that for its own development.
Yeah, that is a bit disheartening. It’s a reminder of how vital it is to support open source tools, especially when they’re going up against massive, well-funded competitors. These projects often power the backbone of the internet and tech ecosystems, but they can’t survive on goodwill alone.
If we want innovation, transparency, and community-driven development to thrive, we have to step up — whether it’s donating, spreading the word, or helping out however we can.
It feels surreal that every time a Django topic comes up on this site it's flooded with people praising it and proclaiming how much they love it.
I honestly found it to be the absolute worst Python framework I've ever worked with. I found it so hard to intuitively write code for it because it just does stuff for you in the background and you can't always see the execution order of code, especially when leveraging that default dashboard feature. I lasted 11 months in a role that used Django exclusively. I'm happy for people that built a career with it, but it just blows my mind people aren't more critical of it. Not that they necessarily need to be though.
* I think Django is an amazing piece of software, developed by a lot of clever, brilliant people.
* I don’t want to use Django.
I think Django is unmatched for building a Django app. That is, if you want to connect to a relational DB, make CRUD queries with its OR , and spit out the results in the exact HTML or JSON it supports, you’re going to have a great time. If you want to hit non-relational backends (including APIs), form your own outputs, or reuse the SQLAlchemy models you built for another part of the project, you’re entering a world of pain. Mark it zero and move on. Turns out most of my stuff is doing non-Django patterns. But if that were different, if I were building a traditional website on top of PostgreSQL and starting with a blank slate, sure, it’d be high on my list of options.
It's probably because you never did the Django tutorial. Once you understand what what does, it's actually very nice, because you don't have any boilerplate. Django takes care of the boring parts, and you can focus on making the app. But at the same time you still have control to customize everything to your liking. And the docs are very good and complete, so you can always look up stuff if you don't understand it.
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.
Having done Rails and Django professionally for some time now I’d honestly recommend Django. While I love the meta aspects of Rails unlike other people I just think the Python library ecosystem is just so massive that you can quite literally do anything with Django without having to resort to multiple programming languages, etc.
Lot of the places I see that use Rails now has a separate codebase for their Python work that has to be accessed via separate querying versus just using the Django ORM.
For most cases I would recommend Django to be the main framework for startups. But if you don’t intend to do any ML/AI and only need a defined set of libraries and you are a one man shop then Rails dev speed is so fast.
* I've always preferred Python over Ruby. Explicit imports, namespaces and the "only one way to do something" philosophy have felt more scalable. In general the language does not promote as much implicit magic
* Django reflects the same philosophy: more explicit definitions, a slight bit more configuration and ceremony but easier debuggability.
* The Django docs are, to me, some of the best there is in documenting the framework extensively but also teaching good practices. I've always felt the Ruby docs to be lacking in the latter department so you see more drift in Ruby projects on how to approach the same problems
* Django has felt much stable over the years. Migration between major versions is a breeze.
* The Python library ecosystem is much larger
* The Django admin and Rest Framework are some of the biggest timesavers I've seen. Rails has similar projects but they don't quite make it
Unless you're doing a GIS or project with scientific computing I would not let these factors go above personal preference, as Rails is still an excellent framework.
I haven’t done a ton with Rails professionally - but in my mind, if I was doing customer facing CRUD I would reach for rails, I think the deployment ecosystem and development experience is a bit better.
Django, however, is wonderful for internal tooling, or anything where you need to plug in Python libraries. GIS is a clear win for Django, as well as custom BI work or data analytics
Depends on the project. I feel like Rails has better JS integration if your project really needs it. The out of the box JS experience with rails (import maps) is similar to django (static link from cdns), but the ability to set up esbuild from project generation makes it really easy
Literally just my opinion though, but I haven't been pleased with an extremely nice method to set up django with javascript that doesn't feel hacky for local dev and deployment
As someone who has used quite a few MVC frameworks professionally, in my opinion, Ruby on Rails continues to be the gold standard in many ways. Django feels more like a toy framework which, if I may say so, appeals mostly to developers who picked up Python as undergrads and then were not impelled in their particular careers to master other languages.
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.
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.
[+] [-] ghc|8 months ago|reply
Years later (2009), I got to do interesting work in a cutting edge machine learning lab due to the expertise I developed in Django -- I was accepted into the lab specifically to clean up the mess phd students had made trying to build a complex front end using Django's ORM with physically separate per-user MySQL database servers.
All the things that came after -- being the first full time employee at a machine learning spinout from the lab, getting acquired by a big company and scaling up sensor-driven ML in the real world, quitting to co-found an ML-centered VC fund, starting a (now 10 year old) AI company -- none of it would have happened without Django.
[+] [-] lvl155|8 months ago|reply
[+] [-] majormunky|8 months ago|reply
[+] [-] Daishiman|8 months ago|reply
[+] [-] dcrazy|8 months ago|reply
Also, how on Earth did the ML PhDs decide physically segregated databases for each user were a requirement?
[+] [-] szczepu|8 months ago|reply
[+] [-] tough|8 months ago|reply
didnt they hear about sqlite, great for this setup
[+] [-] ekinertac|8 months ago|reply
Django is pragmatic, secure, and unbelievably stable. It's the framework you choose when you want to build a real business, not just chase the latest trend. It has powered some of the biggest sites on the web, and it's still the best choice for a huge number of projects.
Here's to 20 more years.
[+] [-] manojlds|8 months ago|reply
[+] [-] simonw|8 months ago|reply
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/
[+] [-] Induane|8 months ago|reply
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.
[+] [-] bnchrch|8 months ago|reply
I have to say thank you to Simon and the Django community as a whole.
Its a wonderful "batteries included" framework that has launched many successful projects, companies, and careers. Mine included.
And I'd be lying if I didnt say I still use pgadmin as my benchmark for evaluating admin panels in other ecosystems.
What you all created with Django is amazing.
We'd all be much further behind in tech without it.
Thanks absolute heaps.
[+] [-] chistev|8 months ago|reply
[+] [-] spapas82|8 months ago|reply
Django has a lot of beloved features but I think one of the most important is it's stability through the years: I actually have production apps that started on Django 1.4 and python 2.6 and now are updated and with with Django 5 and python 3.13.
All this without too much effort on my side or paying companies to support my projects.
So thank you Django people for the hard work!
[+] [-] dmpayton|8 months ago|reply
It wasn't long before newforms became a thing, and the 1.0 release, lots of cool database features, migrations (I remember debating South vs. Nashvegas at work), class-based views (amazing!), Postgres-specific features (built-in JSONField, finally!), Py3k support, ASGI... It's been a long, cool, productive road.
I was at the first DjangoCon in 2008 (leaving my wife at home with our two month old!), and giving a conference talk for the first time a decade later at DjangoCon 2018.
I owe my career to Django. It has been my framework of choice for projects large and small, and I've always felt solid in that decision -- thanks in no small part to the community.
HBD Django! <3
[+] [-] akoumjian|8 months ago|reply
Before I knew it I was helping organize the user group including our weekly coffee shop meetups in addition to the monthly lecture gatherings. There were a lot of local startups (including some very well known businesses and non-profits today) very actively collaborating on these tools. Django was really evolving the way a lot of companies used software and automation.
It wasn't only the engineering, the community ethos of Django both at the local and international scale (and the Python community as a whole) really made it possible to branch out and accelerate my personal software engineering journey.
[+] [-] strict9|8 months ago|reply
Every time I work with another framework I am reminded of how well Django has adhered to initial principles (batteries included) while adapting to changes with new technologies.
It has a great community behind it and for that to exist for so long is something remarkable. Other frameworks have advantages in some places. But for overall tooling I think it still is the best choice for anything large and complex yet not a bad choice for micro projects either.
[+] [-] misthop|8 months ago|reply
[+] [-] dylan-m|7 months ago|reply
Alas, that tends to be the majority of my experience with Django. Using it for one-off personal projects and quietly wishing for the current new shiny JavaScript thing to go away. It still feels like home, but most of my time is somewhere else.
[+] [-] aniforprez|8 months ago|reply
Otherwise it's a fantastic framework that's extremely flexible and a joy to work with most of the time. Due to its longevity, it has such a rich ecosystem that's enviable and only mirrored by the likes of rails.
[+] [-] matsemann|8 months ago|reply
It's a good practice anyways I feel, as the application grows you don't want different "apps" to know too much about models in other apps.
But even with this flow, in my selector layer I still have to do "# type: ignore" any time I've used an annotation. Especially due to python's lacking lambdas, when I map data from a queryset it often has to be a properly defined function, but then whatever annotation django-stubs managed to apply is lost anyways.
[+] [-] noufalibrahim|8 months ago|reply
Back in the day, when I was first picking up on frameworks, I saw Django and TurboGears. A friend of mine went with Django while I went with TG. I don't really know what the status of TG is anymore but back then, I thought SQLObject, Mochikit etc. were awesome. I think I took the wrong fork in the road then.
I once attended a "web" panel at PyCon India where there was a discussion between proponents of various frameworks. The Django guy had a nice quote - "I don't know what the standard Python web framework of Python will look like in another 20 years but I'm quite sure that it will be called Django". His point was about the longevity of the project and it's ability to adapt.
[+] [-] Takennickname|8 months ago|reply
[+] [-] chistev|8 months ago|reply
But I still learn Javascript lol
[+] [-] hed|8 months ago|reply
Here’s to another 20!
[+] [-] tock|8 months ago|reply
- 25.6% funded
- $76,707 donated
:(
[+] [-] ethan_smith|8 months ago|reply
[+] [-] rick1290|8 months ago|reply
If we want innovation, transparency, and community-driven development to thrive, we have to step up — whether it’s donating, spreading the word, or helping out however we can.
[+] [-] hnarayanan|8 months ago|reply
[+] [-] nanna|8 months ago|reply
[+] [-] i_am_programmer|8 months ago|reply
I honestly found it to be the absolute worst Python framework I've ever worked with. I found it so hard to intuitively write code for it because it just does stuff for you in the background and you can't always see the execution order of code, especially when leveraging that default dashboard feature. I lasted 11 months in a role that used Django exclusively. I'm happy for people that built a career with it, but it just blows my mind people aren't more critical of it. Not that they necessarily need to be though.
[+] [-] kstrauser|8 months ago|reply
* I think Django is an amazing piece of software, developed by a lot of clever, brilliant people.
* I don’t want to use Django.
I think Django is unmatched for building a Django app. That is, if you want to connect to a relational DB, make CRUD queries with its OR , and spit out the results in the exact HTML or JSON it supports, you’re going to have a great time. If you want to hit non-relational backends (including APIs), form your own outputs, or reuse the SQLAlchemy models you built for another part of the project, you’re entering a world of pain. Mark it zero and move on. Turns out most of my stuff is doing non-Django patterns. But if that were different, if I were building a traditional website on top of PostgreSQL and starting with a blank slate, sure, it’d be high on my list of options.
[+] [-] mixmastamyk|8 months ago|reply
The one thing that still bugs me is that you have to wire everything together manually. But other than that, much better than most.
[+] [-] gitaarik|8 months ago|reply
[+] [-] hedgehog0|8 months ago|reply
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.
[+] [-] abhiyerra|8 months ago|reply
Lot of the places I see that use Rails now has a separate codebase for their Python work that has to be accessed via separate querying versus just using the Django ORM.
For most cases I would recommend Django to be the main framework for startups. But if you don’t intend to do any ML/AI and only need a defined set of libraries and you are a one man shop then Rails dev speed is so fast.
[+] [-] Daishiman|8 months ago|reply
* I've always preferred Python over Ruby. Explicit imports, namespaces and the "only one way to do something" philosophy have felt more scalable. In general the language does not promote as much implicit magic
* Django reflects the same philosophy: more explicit definitions, a slight bit more configuration and ceremony but easier debuggability.
* The Django docs are, to me, some of the best there is in documenting the framework extensively but also teaching good practices. I've always felt the Ruby docs to be lacking in the latter department so you see more drift in Ruby projects on how to approach the same problems
* Django has felt much stable over the years. Migration between major versions is a breeze.
* The Python library ecosystem is much larger
* The Django admin and Rest Framework are some of the biggest timesavers I've seen. Rails has similar projects but they don't quite make it
Unless you're doing a GIS or project with scientific computing I would not let these factors go above personal preference, as Rails is still an excellent framework.
[+] [-] sroerick|8 months ago|reply
Django, however, is wonderful for internal tooling, or anything where you need to plug in Python libraries. GIS is a clear win for Django, as well as custom BI work or data analytics
[+] [-] neko_ranger|8 months ago|reply
[+] [-] michaelcampbell|8 months ago|reply
[+] [-] Exoristos|8 months ago|reply
[+] [-] jillesvangurp|8 months ago|reply
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.
[+] [-] lvl155|8 months ago|reply
[+] [-] enether|8 months ago|reply
[+] [-] rollcat|8 months ago|reply
I was still at uni (2008) when I got my first PHP job. I've shown Django to my boss. He's never started another PHP project since.
Django is now older than I was when I first used it. To another 20 years.