Django Rest框架业务逻辑

per*_*erp 18 python django business-logic django-rest-framework

我正在尝试使用Django Rest Framework创建一个后端,并且我正在尝试确定将业务逻辑放在何处.它会进入views.py吗?我想创建更复杂的服务,而不仅仅是获取对象列表或抓取一个特定对象.任何指导将不胜感激,谢谢.我意识到有一个关于通用Django项目中的业务逻辑的讨论,但我特别询问django rest框架.

Sae*_*eed 16

它更多的是关于设计模式而不是Django Rest Framework.

以下是一些提示:

  • 使用REST提供接口不应涉及与数据操作或业务逻辑相关的任何特定代码.
  • 使用MVC方法并不意味着您不应该对应用程序进行分层.
  • 您应该能够在不触及UI的情况下测试业务逻辑.
  • 有些人可能会建议将业务逻辑放在模型中.但我不同意这些,因为Django模型不同于领域模型和业务相关的任务,如税收计算.
  • 在陷入MVC之前,您可以阅读有关MVC三层架构中实现的MVC的更多信息
  • 我建议有一个业务层和相关的应用程序,将您的业务逻辑放在那里.

MVC +三层图

假设您有一个在线咖啡店,并且您想提供一个REST API来订购咖啡.

以下是我建议的代码示例:

的myapp/views.py:

    def order(request, quantity=1):
        # Process the order by calling the mapped method
        order_id = CoffeeShopService.place_order(quantity)
        return HttpResponse({'order_id': order_id, mimetype='application/json')
Run Code Online (Sandbox Code Playgroud)

MYAPP/services.py:

    class CoffeeShopService(object):
        @staticmethod
        def place_order(quantity):
           # do the business logic here
           return order_id
Run Code Online (Sandbox Code Playgroud)

  • DRF中的异常处理是一个不同的问题,可以通过自定义异常处理来实现.如果您搜索,您可以找到如何或您可以提出单独的问题 (2认同)