我从iOS背景转向Django。作为一名应用程序开发人员,我习惯于清晰定义的MVC架构。我的故事板包含我的视图。我的视图控制器包含我的逻辑,并且我的模型存在于对象关系映射(ORM)框架或数据库中。
在网络上,责任的分离似乎不那么明显。当然,数据库和ORM存在。HTML似乎是我的视图。 Django模型似乎就是那样。但是控制器在哪里呢?
我的业务逻辑在哪里呢?
我从iOS背景转向Django。作为一名应用程序开发人员,我习惯于清晰定义的MVC架构。我的故事板包含我的视图。我的视图控制器包含我的逻辑,并且我的模型存在于对象关系映射(ORM)框架或数据库中。
在网络上,责任的分离似乎不那么明显。当然,数据库和ORM存在。HTML似乎是我的视图。 Django模型似乎就是那样。但是控制器在哪里呢?
我的业务逻辑在哪里呢?
正如Django FAQ所指出的,Django并没有完全遵循MVC模式,至少不是一种直接的方式。(他们认为Django本身就是控制器,但这不是我对MVC的理解。)
Django中的“控制器”基本上就是Django所谓的视图。因此,您有您的模型类,这显然是M。模板/HTML基本上是MVC中的V。Django视图(函数或类)有效地成为特定URL运行的回调,并且它们往往是大量逻辑的所在地。例如,当某人向/foo/bar发出GET请求时,您将拥有一个名为get_foo_bar的Django视图,该Django视图有效地成为MVC中的C。
因此,长话短说,您的逻辑通常会放在Django视图中。
Django有控制器,存储在views.py文件中,这种命名方式会让一些具有MVC背景的新手感到困惑。你可以在这里阅读相关内容:https://docs.djangoproject.com/en/1.8/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