Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google app engine 模型是否应该处理请求/响应对象?_Google App Engine_Model View Controller_Webapp2 - Fatal编程技术网

Google app engine 模型是否应该处理请求/响应对象?

Google app engine 模型是否应该处理请求/响应对象?,google-app-engine,model-view-controller,webapp2,Google App Engine,Model View Controller,Webapp2,为了保持我的控制器精简,我把所有的逻辑都放在了模型上。但是因为我需要读取和设置cookie,所以模型需要有请求和响应对象。现在每次我调用一个model方法,我都必须发送这些对象作为参数。我需要记住哪个方法需要一个或另一个对象,或者两者都需要。它看起来像: 处理某物(数据,self.request,self.response) 这是一种正确的方法还是有一种更简单的方法?我同意目前的评论,并认为这可能不是最好的方法。寻找一些方法来进一步抽象出你需要用cookies做什么。可能会传入一个回调函数或其他

为了保持我的控制器精简,我把所有的逻辑都放在了模型上。但是因为我需要读取和设置cookie,所以模型需要有请求和响应对象。现在每次我调用一个model方法,我都必须发送这些对象作为参数。我需要记住哪个方法需要一个或另一个对象,或者两者都需要。它看起来像:

处理某物(数据,self.requestself.response


这是一种正确的方法还是有一种更简单的方法?

我同意目前的评论,并认为这可能不是最好的方法。寻找一些方法来进一步抽象出你需要用cookies做什么。可能会传入一个回调函数或其他对象,以帮助您保持所需的分离。

在我看来,您永远不应该这样做。但是,您没有提供足够的信息来展示适合您所做工作的替代方法。听起来您试图做一些类似MVC的事情,但您正在将控制器移动到您的模型中。这有点打破了MVC背后的理念。一般来说,您可能应该将cookie管理与模型分开。@dragonx:但cookie处理是逻辑的一部分。我在数据库中做了一些更改,在cookie中做了一些相应的更改。我的印象是控制器是模型和视图之间的粘合剂,所以它不应该做任何逻辑。MVC中的模型不应该是类或对象。模型是一个层。从MVC的角度来看,cookie是一种存储形式。这意味着他们会被某种形式的。而且,控制器并不是真正的粘合剂。它只应根据用户输入(通常抽象为某个请求对象)更改模型层和当前视图的状态。控制器不从模型层收集信息。请不要再把MVC和Rails类的实现混为一谈了(它们是PAC的私底下化)!但是一个模型必须触摸响应对象才能设置cookie,这意味着我必须将这个对象传递给模型。由于控制器首先拥有此对象,因此控制器必须将其作为参数发送到模型。lambda state:request.cookies['mycookie']=状态当然会根据web框架使用的语法进行调整。或者,如果事情更复杂,您可以传入一个对象MyStateController。底线是您希望避免在模型中使用“设置cookie”的概念。当然,如果您要避免这个概念,那么您希望避免关联的对象(请求、cookie、会话…),请随意发布一些代码以了解更多细节。