Django分离业务逻辑和视图逻辑

时间:2011-05-25 19:43:25

标签: django model-view-controller

有人可以解释以下含义:

  

“业务逻辑属于模型,   但视图逻辑属于视图。“

每个例子和一些例子的一般区别是什么。谢谢。

2 个答案:

答案 0 :(得分:1)

您可以在其他问题的评论中提出问题;)。

商业逻辑是与“事物”如何运作或运作相关的任何事物。举例来说:

class Animal(Object):
    def speak(self, sound):
        print sound

class Duck(Animal):
    has_feathers = True

执行以下操作是不正确的:

>>> myduck = Duck()
>>> myduck.speak('Quack!')
Quack!

鸭子发出'嘎嘎!'的声音!是业务逻辑,应该在模型中:

class Duck(Animal):
    has_feathers = True
    makes_sound = 'Quack!'

    def speak(self):
        super(Duck, self).speak(self.makes_sound)

你不一定需要理解这一切;我们所做的就是确保当Duck说出'嘎嘎!'时说:

>>> myduck = Duck()
>>> myduck.speak()
Quack!

查看逻辑将与处理请求和返回某种响应相关。使用前面的示例,我们的视图将包含用于实例化Duck对象并使其发声的代码。

myduck = Duck()
myduck.speak()

“回应”将是'嘎嘎!'。

答案 1 :(得分:0)

改善最后的答案 如果你是Django的新手是一个很好的实践,使你的业务逻辑和视图逻辑分离,我们的业务逻辑应该在你的模型或该级别的任何文件中,并且你只需要调用对象和方法将数据返回给你视图,你不应该处理你的数据(我的意思是数据的机会或任何aditional逻辑),如果你需要改变你的主要方法逻辑,你应该改变你的方法,但如果你想保持然后,您应该创建一个新方法来处理这个新条件