我注意到我坐在幾個控制器的頂部有一段代碼。他們往往是這樣的:我應該在哪裏放置輸出字段描述,控制器或模型?
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