learning-unlimited/ESP-Website — Issue #100: Improve Model/Controller separation
Author: aseering
Created: 2011-11-23 05:40:00+00:00
State: open
Labels: ArchitecturalChange

Models are intended to represent stored data. Controllers are intended to represent program logic; the manipulation that's done to stored data.

Django tries to [claim](https://docs.djangoproject.com/en/dev/faq/general/#django-appears-to-be-a-mvc-framework-but-you-call-the-controller-the-view-and-the-view-the-template-how-come-you-don-t-use-the-standard-names) that Views are the new Controllers; or at least that Controllers, in the MVC sense, aren't really a part of their MTV design. We tried that strategy at first, but ultimately found that what we really want is MTVC; "all of the above". So we've been adding Controllers recently, and pulling control logic out of views and models into which it had previously been inelegantly smooshed.

We should keep doing this. Elegant abstraction barriers and all that.