gpt4 book ai didi

django - 具有Django Rest框架的领域驱动设计洋葱架构

转载 作者:行者123 更新时间:2023-12-02 11:21:31 25 4
gpt4 key购买 nike

我最近在阅读有关域驱动设计(DDD)的文章,我喜欢这个概念,尤其是Onion体系结构的概念(https://www.youtube.com/watch?v=pL9XeNjy_z4)。

我很想知道我们如何使用Django Rest Framework实现这种架构,或者我们可以用Onion拱形风格的Django rest框架进行DDD吗?

  • 是否可以将Onion体系结构中的概念映射到DRF?
  • 当像Apache isis(https://isis.apache.org/)这样的框架通过构建面向对象的UI来进行DDD时,用户可以直接与域实体进行交互,因此DRF如何做这些事情?

  • 作为示例,我以以下方式编写DRF代码:

    在models.py中,我将定义模型:
    class Library(models.Model):
    library_id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=30)
    ...

    #This helps to print in admin interface
    def __str__(self):
    return u"%s" % (self.name)

    在serializers.py中,我将使用模型序列化器:
    class LibrarySerializer(serializers.ModelSerializer):
    class Meta:
    model = Library
    fields = '__all__'

    我将在urls.py中有相应的url:
    router.register(r'libraries', LibraryViewSet)

    并在views.py中执行CRUD操作:
    class LibraryViewSet(viewsets.ModelViewSet):
    queryset = Library.objects.all()
    serializer_class = LibrarySerializer

    这与DDD/Onion体系结构有什么关系(也许进行了适当的修改)?

    最佳答案

    简短答案:DRF和DDD +六角形架构不是最好的 friend 。
    当模型反射(reflect)领域(主题,手头的问题)时,最有可能出现在CRUD的对立面中。创建,读取,更新,删除是并非总是随处可见的语言的 Action 。
    而且,洋葱/六角结构将要求模型不依赖于任何框架或库代码。可以反转这些依赖性并使持久性和传递机制取决于您的模型(而不是在您的域内使用任何Django导入),但是对于Django无疑是困难的。该框架规定了与此相反的一切。

    关于django - 具有Django Rest框架的领域驱动设计洋葱架构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49488588/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com