我正在尝试使用Django Rest Framework创建一个后端,并且我正在尝试确定将业务逻辑放在何处。它会进入views.py吗?我想创建更复杂的服务,而不仅仅是获取对象列表或抓取一个特定对象。任何指导将不胜感激,谢谢。我意识到有一个关于通用Django项目中的业务逻辑的讨论,但我特别询问django rest框架。
它更多的是关于设计模式而不是Django Rest Framework。
以下是一些提示:
假设您有一个在线咖啡店,并且您想提供一个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')
MYAPP / services.py:
class CoffeeShopService(object):
@staticmethod
def place_order(quantity):
# do the business logic here
return order_id
我想这是一个设计模式Questing in Rest Framework。以下是我在Rest Framework上的API构建中如何使用分层方法的详细概述!
为了便于维护,它更加分层,最重要的是利用设计模式和GRASP Principal!
分层方法包级别视图
进一步分类:
现在我是如何浏览图层的示例:
也许这是一种稍微偏心的方式,但我认为通过在其中添加方法将逻辑包装到序列化器中是非常有帮助的。
例如
串行:
class OrderSerializer(serializers.ModelSerializer):
class Meta:
model = Order
fields = (
'id',
'total',
'discount',
)
def calculate_discount(self, whatever_params):
# calculate discount if you need... and return it
def calculate_tax(self, whatever_params):
# calculate tax amount if you need...and return it
def calculate_grand_total(self, whatever_params):
# calculate grand total if you need and return it
def create(self, validated_data):
# You can make an order by applying
# some logic in the calculation method.
# Maybe by adding a bit of the context
# you sent as parameters from view.