【发布时间】:2020-10-25 15:58:03
【问题描述】:
我在这篇文章1 和这个视频2 中看到,这对于使用服务层在 Django 中构建您的 REST 应用程序非常有帮助,因为将您的业务逻辑放在模型层或视图层不是最好的选择。可以和我分享一些简单的 Django 服务模型吗?
【问题讨论】:
标签: django django-models django-rest-framework django-views
我在这篇文章1 和这个视频2 中看到,这对于使用服务层在 Django 中构建您的 REST 应用程序非常有帮助,因为将您的业务逻辑放在模型层或视图层不是最好的选择。可以和我分享一些简单的 Django 服务模型吗?
【问题讨论】:
标签: django django-models django-rest-framework django-views
最好的基于 DRF 的企业应用程序是在 Django 和 DRF 上使用以下结构开发的:-
服务层示例:
class RecoInfoService():
def get_initiated_reco_detail(self, request, id):
obj = RecoInfoProxy.objects.get_initiated_reco_by_id(id=id)
serial_data = GetRecoInfoSerializer(obj)
return Response(serial_data.data, status=status.HTTP_200_OK)
def initiate_reco(self, request):
line_items_service = LineItemsService()
print(request.data, type(request.data),"in INITIA")
serial_data = RecoInfoSerializer(data=request.data, many=True, context={'request':request})
if serial_data.is_valid(raise_exception=True):
with transaction.atomic(), reversion.create_revision():
createdObj = reversion_post(request, serial_data)
self.trigger_reco_initiation_notification(createdObj)
line_items_service.prefetch_reco_initiation_lineitems(createdObj)
return createdObj
现在从您的views.py 调用此服务方法:
class RecoInfoView(views.APIView):
def post(self, request, **kwargs):
operation = kwargs.get('operation')
initiate_reco_service = RecoInfoService()
if operation == 'request':
reco_info_obj = initiate_reco_service.initiate_reco(request)
return Response('msg : Initiate Reco Successfull')
【讨论】: