我注意到我坐在几个控制器的顶部有一段代码。他们往往是这样的:我应该在哪里放置输出字段描述,控制器或模型?
def app_description(app):
""" Dictionary describing an app. """
return {'name': app.app,
'id': app.id,
'is_new': app.is_new(),
'created_on': app.created_on.strftime("%m/%d/%Y"),
'configured': app.configured }
我就可以在控制器中的几个不同的动作调用此方法,但一般并不控制器之外。它访问属性。它调用方法。它格式化不透明的对象(如日期)。
我的问题是:这是控制器代码,还是型号代码?
为控制器的情况下:
- 它定义了我的API。
- 它目前仅在该模块中使用。
- 这里似乎没有任何逻辑。
为模型的情况下:
- 这似乎是对数据的描述,模型应该负责。
- 感觉就像我可能想在其他控制器中使用它。还没有到那里,但这些功能还是很新的,所以他们可能会。
- 将函数附加到它明确属于的对象似乎比将其作为模块级函数更好。
- 它可以更简洁地定义在模型上。像顶级模型对象定义为
.description()
,并且子类仅定义属性的黑/白列表,并且重写方法本身以调用函数。我敢肯定,这将是更少的代码行(因为它会让我省去像'name': app.name
这样的重复),这似乎是件好事。
真正的问题是'MVC'不适用于web开发那么好.. – plaes 2012-01-13 19:24:35