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

Django: separating business logic from view logic

可能的参考:Django中业务逻辑和数据访问的分离

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

项目/应用程序/我的逻辑.py

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

然后,我会用这样的逻辑,

项目/应用程序/视图.py

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

问题:

  • my_logic.py放在哪里?
  • 是传统的吗?
  • 有什么更好的办法?
  • 注意:这是您导入模块的方式(如果其他人试图了解如何操作模块)

    1
    2
    project/app/your_module/your_module.py
    project/app/your_module/__init__.py

    从views.py,

    1
    from app.your_module import your_module


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

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