> Markdown version of [/videos/112-is-django-too-complicated](https://www.wearedevelopers.com/videos/112-is-django-too-complicated). Every page supports `.md` or `Accept: text/markdown`. Links point to the HTML versions so they work for humans too. Agent guide: [/agents.md](https://www.wearedevelopers.com/agents.md). --- # Is Django too Complicated? Django’s massive codebase isn't unnecessary bloat. It acts as a critical security guardrail. Stop stitching together fragile micro-frameworks and embrace the long-term stability of opinionated tooling. - **Speakers:** Daniel Hepper - **Event:** WeAreDevelopers LIVE - **Published:** February 17, 2021 - **Duration:** 24:59 - **URL:** https://www.wearedevelopers.com/videos/112-is-django-too-complicated ## Summary This presentation navigates the ongoing debate around whether Django—a "batteries-included" Python framework—is overly complicated compared to micro-frameworks like Flask. By contrasting a canonical "Hello World" application built with both tools, the narrative acknowledges Django's seemingly daunting 83,000-line codebase and intricate dependency graph. However, this inherent complexity solves critical engineering challenges. Micro-frameworks frequently force development teams to stitch together third-party packages, inadvertently creating a disjointed tech stack that can lead to severe maintenance friction, especially when the original developers leave. In contrast, standardizing on a robust, unified framework builds long-term stability and code maintainability. A major theme focuses on how extensive framework defaults act as essential security guardrails. While beginners often struggle with Django's out-of-the-box Cross-Site Request Forgery (CSRF) features, these built-in constraints proactively secure applications against "unknown unknowns." By providing battle-tested utilities for ubiquitous tasks like password resets and session management, comprehensive frameworks save software developers from risky reinvent-the-wheel endeavors and debilitating decision fatigue. Django is best understood as a hybrid of a framework and a library; developers can adopt only the modules they need without feeling obligated to master its vast documentation immediately. Ultimately, web development is inherently complex regardless of the foundational tools. The presentation proposes an intriguing paradox: Django could potentially become even simpler and more powerful if it were *more* opinionated. By hypothetically enforcing stricter constraints—such as exclusively supporting Postgres to eliminate generic SQL generation overhead or standardizing JavaScript integrations—frameworks can drastically reduce configuration dilemmas and further accelerate developer productivity. **Keywords:** django framework complexity, python web development, batteries-included framework, flask micro framework, tech stack monoculture, third-party dependency maintenance, framework decision fatigue, cross-site request forgery protection, web application security guardrails, mvc crud applications, object-relational mapping tools, tech stack standardization, postgres framework integration, boilerplate configuration management, single file django application ## Chapters 1. **Freelance background and opinions on web framework complexity** (00:16) — Experience across diverse web projects highlights the critical trade-offs between micro frameworks and comprehensive, default-heavy web application architectures. 1. **Building a canonical hello world application in Django** (02:33) — Creating a basic starter project often exposes initial friction like distinguishing between projects and apps or handling oversized default settings files. 1. **Comparing lines of code and framework dependency graphs** (05:12) — Analyzing codebase size and external dependencies reveals that micro frameworks typically require heavy third-party packages to match built-in generic framework utility. 1. **Creating a minimal single file Django web application** (07:55) — Stripping a project down to strictly URL routing and views demonstrates how to successfully run minimal applications without additional features like templates or database functionality. 1. **Measuring memory usage and unused framework Python packages** (10:19) — Importing only a targeted subset of packages for minimal web utilities proves that large frameworks carry nearly identical memory footprints to heavily extended microservices. 1. **Security defaults and preventing cross site request forgery** (11:46) — Explicit security configuration settings and protective framework environments inherently defend novice software developers against severe web vulnerabilities. 1. **Avoiding decision fatigue and preventing fragmented maintenance hell** (15:35) — Choosing a unified foundational technology stack avoids the painful operational burden of maintaining fragmented background microservices built upon heavily variable third-party libraries. 1. **Navigating extensive framework documentation and internal architectural structure** (21:13) — Treating dense framework documentation as an ad-hoc reference library rather than a linear educational manual makes discovering and deploying vital native components far more intuitive. 1. **Embracing high opinionation to simplify web application architecture** (22:53) — Dropping broad database abstractions in favor of strictly specified integrations like PostgreSQL directly streamlines development and immediately optimizes overarching framework capabilities. ## Related Moments - [Evaluating backend framework choices for modern software applications](https://www.wearedevelopers.com/videos/100172-after-the-framework-wars-what-s-next-for-web-development) (from "After the Framework Wars: What’s Next for Web Development") - [The shift from simple web frameworks to modern complexity](https://www.wearedevelopers.com/videos/386-telemetry-without-the-tool-tax) (from "Telemetry without the 'Tool Tax'") - [The enduring value of web frameworks in the AI era](https://www.wearedevelopers.com/videos/100172-after-the-framework-wars-what-s-next-for-web-development) (from "After the Framework Wars: What’s Next for Web Development") - [Evaluating the drawbacks of general-purpose monolithic frameworks](https://www.wearedevelopers.com/videos/224-the-naked-web-developer-your-browser-is-your-framework) (from "The Naked Web Developer: Your Browser Is Your Framework") - [The developer bias towards complex abstractions and frameworks](https://www.wearedevelopers.com/videos/1806-nolojs-avoiding-javascript-cruft-with-html-and-css-aaron-t-grogg) (from "NoLoJS - Avoiding JavaScript Cruft with HTML and CSS - Aaron T. Grogg") - [Q&A: Mitigating team onboarding friction and domain overhead](https://www.wearedevelopers.com/videos/224-the-naked-web-developer-your-browser-is-your-framework) (from "The Naked Web Developer: Your Browser Is Your Framework") ## Related Articles - [How to Avoid Over-Engineering](https://www.wearedevelopers.com/magazine/546-how-to-avoid-over-engineering) - [Web Development Best Practices: What The Data Tells us](https://www.wearedevelopers.com/magazine/84-web-development-best-practices-what-the-data-tells-us) - [Dev Digest 130 - The Diablo is in the details](https://www.wearedevelopers.com/magazine/470-dev-digest-130-the-diablo-is-in-the-details) - [Dev Digest 104 - Fight for your right to 3rd party](https://www.wearedevelopers.com/magazine/390-dev-digest-104-fight-for-your-right-to-3rd-party) ## Related Jobs - [Staff Developer Advocate, GitHub Security Lab](https://www.wearedevelopers.com/jobs/ext/1921051-staff-developer-advocate-github-security-lab) at **GitHub** - [Backend Engineer, Python (Web3)](https://www.wearedevelopers.com/jobs/ext/1934515-backend-engineer-python-web3) at **Bitpanda** - [Senior Software Engineer, Client Apps Platform](https://www.wearedevelopers.com/jobs/ext/1773893-senior-software-engineer-client-apps-platform) at **GitHub** - [Senior Data Engineer](https://www.wearedevelopers.com/jobs/ext/1589390-senior-data-engineer) at **Douglas GmbH** - [Senior Backend Engineer, Blockchain (Smart Contracts)](https://www.wearedevelopers.com/jobs/ext/1940851-senior-backend-engineer-blockchain-smart-contracts) at **Bitpanda** - [Principal Software Engineer, Database Infrastructure](https://www.wearedevelopers.com/jobs/ext/1465908-principal-software-engineer-database-infrastructure) at **GitHub**