I really like Django. I would pick Django over any other option for setting up a website regardless of expected complexity. In my opinion, if you fully embrace Django, it will allow you to focus on the product and not fight an uphill battle against the computer.
I do a bit of freelancing on the side, and it saddens me that I rarely see Django projects in the wild. Wherever I join and I'm lucky enough that it's a Python gig, it's usually Flask or FastAPI.
When I ask why, it's usually something along the lines of: "Oh, we don't need Django, it's too complex. We just need a simple API".
Yet, they need database access, and ORMs are nice so they brought in SQLAlchemy. And they need user authentication, so they roll their own roles and permissions. And they need JWTs because the frontend is a React app with its own stack. And they need caching so they roll their own. And they need request validation and OpenAPI Javascript client generation so they bring in Pydantic. And of course they need horizontal scalability so they deploy everything on Kubernetes. And then: "We don't need Celery, it's too complex." so they add APScheduler. And then it turns out they do need simple workflows and CPU-heavy processing so they roll their own background task manager.
And here I am, looking at this amalgamation of bytes created in the name of simplicity, thinking: "What a poor reimplementation of Django."
Top comments (0)