Drupal v. Django
Update: You probably shouldn’t read this. It’s really old. Drupal still sucks (my own opinion, obviously), but most of my arguments are easily contestable by both sides. At the end of the day, Django and Drupal were designed to handle different use-cases, so they can’t really be compared to each other.
For one of our clients, we were tasked with writing up some notes on why we choose to use Django rather than Drupal.
Here was our response:
- Instead of Drupal, we use Django, an open source web framework “for perfectionists with deadlines”.
- Drupal started out as a project by a college student to talk to his friends in another dorm.
- Django started out powering the Lawrence Journal-World newspaper. It was built by experienced developers that needed to get things done in the face of the fast deadlines of that industry.
- Django is a lower level development framework (than Drupal) that encourages rapid development and cleanly written & organized code.
- With Django, we’re able to construct custom functionality at a more rapid pace than Drupal.
- Drupal funnels data into chunks of content referred to as “nodes”, which developers must often force their content into. The content should define the data structure, not the other way around.
- Django’s ORM will allow the same code and data models to be used with multiple databases, such as PostgreSQL, MySQL, or Oracle (other DBs supported by 3rd party libraries).
- Drupal does not provide a robust ORM to separate query logic from SQL syntax.
- Drupal’s default admin interface exposes functionality aside from content management, giving non-technical administrators the ability to change (and break) website functions unless complex permissions are set.
- Drupal’s default admin interface is riddled with UI and workflow problems (one of the primary focuses of the upcoming Drupal 7 release).
- Django’s default admin interface is designed to encourage quick and easy content management, and allows developers to quickly design custom admin interfaces and workflows.
- Drupal’s security issues and upgrade paths require website managers to upgrade their codebases very frequently, allowing for more mistakes and confusion with managing the site:
- In the past major release, there have been 16 releases of Drupal, compared to Django’s 7.
- Because Drupal stores so much configuration and definitions of functionality in the database, it becomes incredibly difficult to version control the software.
- Django provides a comprehensive permissions system that grows with your site’s applications more seamlessly than Drupal.
- Drupal’s permissions system is often wound too tightly into custom modules, and is often overlooked by developers, raising security concerns.
- Django cleanly separates front-end work from back-end work, while Drupal does not (using PHP in templates, for example). Django provides a template language that is very well suited for this, quickly and easily learned by front-end developers.
- Django stays truer to the separation of business functions from that of data handling and presentation, using an MVC-like software architecture.