【发布时间】:2013-08-22 03:47:00
【问题描述】:
为了让我的控制器保持纤薄,我将所有逻辑都放到了模型中。但由于我需要读取和设置 cookie,因此模型需要具有 request 和 response 对象。现在每次调用模型方法时,我必须发送这些对象作为参数。我需要记住哪种方法需要一个对象或另一个对象或两者兼而有之。它看起来像:
Model.handle_something(data, self.request, self.response)
是正确的方法还是有更简单的方法?
【问题讨论】:
-
在我看来,你永远不应该这样做。但是,您没有提供足够的信息来展示适合您正在做的事情的替代方法。
-
听起来你正在尝试做类似 MVC 的事情,但是你正在将你的控制器移动到你的模型中。这有点打破了 MVC 背后的理念。一般来说,您应该将 cookie 管理与模型分开。
-
@dragonx:但是 cookie 处理是逻辑的一部分。我对数据库进行了一些更改,并对 cookie 进行了一些相应的更改。我的印象是控制器是模型和视图之间的粘合剂,所以它不应该做任何逻辑。
-
MVC 中的模型不应该是类或对象。模型是一层。从 MVC 的角度来看,Cookie 是一种存储形式。这意味着它们将由某种data mapper 处理。此外,控制器并不是真正的胶水。它应该只根据用户输入(通常抽象为一些请求对象)来改变模型层和当前视图的状态。控制器不从模型层收集信息。 请不要将 MVC 与类似 Rails 的实现(这是 PAC 的混蛋)混淆!
标签: google-app-engine model-view-controller webapp2