Django vs. Model View Controller

Leonardo picture Leonardo · Jul 8, 2011 · Viewed 69.2k times · Source

Can somebody explain me where the diferences are between Django and the Model View Controller pattern?

Functionally, what can we expect from those differences — i.e. what works differently comparing Django to, for example, Ruby on Rails?

Answer

Paolo Moretti picture Paolo Moretti · Jul 8, 2011

According to the Django Book, Django follows the MVC pattern closely enough to be called an MVC framework.

Django has been referred to as an MTV framework because the controller is handled by the framework itself and most of the excitement happens in models, templates and views.

You can read more about MTV / MVC here:

The MTV (or MVC) Development Pattern

If you’re familiar with other MVC Web-development frameworks, such as Ruby on Rails, you may consider Django views to be the controllers and Django templates to be the views.

This is an unfortunate confusion brought about by differing interpretations of MVC.

In Django’s interpretation of MVC, the view describes the data that gets presented to the user; it’s not necessarily just how the data looks, but which data is presented.

In contrast, Ruby on Rails and similar frameworks suggest that the controller’s job includes deciding which data gets presented to the user, whereas the view is strictly how the data looks, not which data is presented.