Django:将业务逻辑与视图逻辑分离

时间:2013-11-29 01:07:45

标签: python django

可能的重新认识:Separation of business logic and data access in django

在我的Django应用程序中,我试图弄清楚在哪里包含我的业务逻辑。逻辑不适合任何模型(假设它是一个没有任何模型的单页应用程序)所以我想添加一个包含逻辑的模块。例如,

项目/应用/ my_logic.py

def calculate(number_one, number_two):
  return number_one + number_two

然后,我会使用逻辑,

项目/应用/ views.py

def index(request):
  number = my_logic.calculate(1, 2) #can I do this?
  return HttpResponse("the number is: %s " % number)

问题:

  1. 放置my_logic.py的正确位置在哪里?
  2. 这是传统吗?
  3. 什么可能是更好的方式?
  4. 注意:这是您导入模块的方式(如果有其他人试图弄清楚如何操作)

    project/app/your_module/your_module.py
    project/app/your_module/__init__.py
    

    来自views.py,

    from app.your_module import your_module
    

1 个答案:

答案 0 :(得分:0)

取决于,但如果它是一个逻辑单元,那么一个单独的python模块将是一个良好的开端,你当然会为它编写自己的单元测试(而不是Django与TestClient的内置集成测试)。

如果它需要在模型中工作,那么模型上的属性将是一个更好的地方。