【发布时间】:2011-10-17 17:25:34
【问题描述】:
几天前我刚刚找到了 web2py,并且一直在阅读文档和一些示例应用程序的源代码。我想开始更多地使用 Python 进行编程。看来我对 MVC 的看法与他们的 [web2py 社区] 有点偏差。
在学习和使用 PHP(和 Kohana 框架)之后,我习惯了瘦控制器 - 胖模型原理,其中所有业务逻辑都放在模型中,控制器只是委托执行哪些方法在模型上,然后将数据传递到视图上进行渲染。但是,我所见过的 web2py 应用程序中似乎 99% 都有胖控制器(将所有业务逻辑放在动作中),而模型只不过是表/约束定义。
我对模型的看法已经很确定了,我宁愿将业务逻辑放在模型中(为了可重用性和 DRY 代码),但我还没有看到任何在线代码可以做到这一点,尽管,公平地说,我还没有找到大量的应用程序。有人能指出我正确的方向吗?
明确地说,我想让我的模型成为实际的类,并将所有业务逻辑和数据库交互封装到显式方法中。类似的东西......
class Article(object):
def get_article(self, id):
# Retrieve article by id, using db instance
pass
def get_latest_articles(self, limit):
# Retrieve latest articles
pass
def get_hot_articles(self, limit):
# Retrieve hot articles, based on algorithm for "hot"
pass
def create_article(self, data):
# Insert article
pass
def define_tables(self):
# Define schema the web2py way
pass
我还没有找到正确的方法。
我对 web2py 的排练不是很好,但我知道有很多功能。例如,DAL 似乎是一个非常强大的功能,它与其他助手紧密集成。我想知道如上所述拆分我的业务逻辑是否会限制这些功能中的任何一个?
【问题讨论】:
-
似乎这个问题最好在 web2py google group 上提出,并且已经被提出。
-
是的,我想您可以从web2py group 获得更多的见解。
-
@BDuelz 可以在这里提出其他地方已经回答的问题。
标签: model-view-controller encapsulation business-logic web2py