Vis*_*hal 16 django model-view-controller
在MVC架构中让我们考虑一下django:
我有一种计算年度最佳员工的方法(1000行代码具有复杂的逻辑),我应该在哪里定义它以及谁来调用它?
谢谢
Pyd*_* UA 26
来自Django文档
添加额外的Manager方法是向模型添加"表级"功能的首选方法.
year_employee.py
)假设您有一个模型Employee
,那么,您应该创建用于管理员工的类:
class EmployeeManager(models.Manager)
def of_the_year(self):
from year_employee import my_calc_func
return my_calc_func()
Run Code Online (Sandbox Code Playgroud)然后将此经理添加到您的模型中
class Employee(models.Model):
[...]
objects = EmployeeManager()
Run Code Online (Sandbox Code Playgroud)
之后你可以这样做:
chosen_employee = Employee.objects.of_the_year()
Run Code Online (Sandbox Code Playgroud)
Jos*_*ogi 12
至于django,放置业务逻辑的最佳位置是内部模型.视图应该从业务逻辑中清除,并且应该仅用于使数据在模板上显示/显示,或者换句话说,仅将视图用于视图逻辑.
来自django FAQ:
在我们对MVC的解释中,"视图"描述了呈现给用户的数据.它不一定是数据的外观,而是呈现的数据.该视图描述了您看到的数据,而不是您的看法.这是一个微妙的区别.
通过将您的业务逻辑放在模型下,它将使您更容易进行单元测试,因为模型没有与HTTP方法或处理相结合.