在MVC模式中,模型中的内容以及视图中的内容是什么?

时间:2009-11-11 23:26:25

标签: python model-view-controller

我正在使用MVC模式设计一些数据分析软件(in Python)。我不确定是否应该在模型或控制器中使用某些功能。

我设计它的方式,用户为程序提供一个包含分析参数的配置文件。该程序解析此文件以找出要查看的数据文件以及要执行的计算类型。

  • 执行此配置文件解析的功能是否应在模型或控制器中?
  • 在使用MVC时,有没有一种标准的方法来组织Python?我已经将模型,控制器和视图分成了不同的类。控制器类包含模型和视图类的实例。
  • 模型和视图之间应该进行什么样的沟通?我构造事物的方式是控制器从模型中获取东西并将其传递给视图。两者只通过控制器进行通信。

3 个答案:

答案 0 :(得分:2)

模型应该是您的实体类,或者只是模拟您正在使用的问题域的类。并且视图基本上与您的用户如何与您正在构建的系统进行交互有关。控制器将两者结合在一起。

答案 1 :(得分:1)

关于你的第一点,解析应该放在模型中,如果它是模型类的一部分;例如,如果您有配置模型,则加载配置的功能属于模型。如果它更像是一个服务(例如我要导入这个文件,然后其他东西将要进行映射)那么它应该在Controller中。在不知道更多细节的情况下,这很难说,但这是我遵循的一般规则。

我不确定你的第二点,因为我不熟悉Python,但典型的方法是将你的文件夹结构分离到Models / Controllers / Views等,但是我只熟悉MVC,因为它与网络应用程序有关,所以我可能不合适,因为你的程序似乎是一个桌面应用程序。

你的第三点是完全正确的。模型不应该与视图对话;控制器与模型通信并检索View需要的信息,并给出视图。我猜本质上视图可能正在使用Model,但它对模型一无所知(例如,如果它来自数据库,配置文件,xml,等等)

答案 2 :(得分:0)

简单地说,模型是您的数据部分(数据库),视图是您的设计部分(HTML,CSS,JavaScript等),而控制器是模型和视图之间的契约:)