Model view controller 如何封装web2py业务逻辑?
我几天前刚刚找到web2py,一直在阅读文档和一些示例应用程序的源代码。我想开始更多地用Python编程。我对MVC的看法似乎有点偏离了他们的[web2py社区] 在学习和使用PHP(以及Kohana框架)之后,我习惯了瘦控制器-胖模型原理,其中所有业务逻辑都放在模型中,控制器只不过是委托在模型上执行哪些方法,然后将数据传递到视图进行渲染。然而,我看到的web2py 99%的应用程序似乎都有fat控制器(将所有业务逻辑放在操作中),而模型只不过是表/约束定义 我对模型的看法非常清楚,我更愿意将业务逻辑放在模型中(用于可重用性和干代码),但我还没有在网上看到任何这样做的代码,尽管公平地说,我还没有找到足够数量的应用程序。谁能给我指一下正确的方向吗 说得很清楚,我想让我的模型成为实际的类,并将所有业务逻辑和数据库交互封装到显式方法中。类似于Model view controller 如何封装web2py业务逻辑?,model-view-controller,encapsulation,business-logic,web2py,Model View Controller,Encapsulation,Business Logic,Web2py,我几天前刚刚找到web2py,一直在阅读文档和一些示例应用程序的源代码。我想开始更多地用Python编程。我对MVC的看法似乎有点偏离了他们的[web2py社区] 在学习和使用PHP(以及Kohana框架)之后,我习惯了瘦控制器-胖模型原理,其中所有业务逻辑都放在模型中,控制器只不过是委托在模型上执行哪些方法,然后将数据传递到视图进行渲染。然而,我看到的web2py 99%的应用程序似乎都有fat控制器(将所有业务逻辑放在操作中),而模型只不过是表/约束定义 我对模型的看法非常清楚,我更愿意将业
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使用DAL(数据库抽象层)而不是ORM。你可能会觉得有用。正如它指出的,在某些情况下,计算字段或虚拟字段可能会执行您想要的操作。另外,示例类中定义的一些方法是非常简单的DAL语句,可能不值得为其编写方法
当然,如果您愿意,您可以在模型(或模块)中定义类和函数,只需从控制器中调用它们——任何最适合您的都可以。在web2py google group上,这个问题似乎会被问到,而且已经被问到了。是的,我想你会从@BDuelz那里得到更多关于这方面的见解。在这里问一些其他地方已经回答过的问题是可以的。