Thi*_*ker 5 django domain-driven-design onion-architecture django-rest-framework
我最近在阅读有关域驱动设计(DDD)的文章,我喜欢这个概念,尤其是Onion体系结构的构想(https://www.youtube.com/watch?v=pL9XeNjy_z4)。
我很想知道我们如何使用Django Rest Framework实现这种架构,或者换句话说,我们可以使用Onion arch风格的Django rest框架进行DDD吗?
作为示例,我以以下方式编写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)
Run Code Online (Sandbox Code Playgroud)
在serializers.py中,我将使用模型序列化器:
class LibrarySerializer(serializers.ModelSerializer):
class Meta:
model = Library
fields = '__all__'
Run Code Online (Sandbox Code Playgroud)
我将在urls.py中有相应的url:
router.register(r'libraries', LibraryViewSet)
Run Code Online (Sandbox Code Playgroud)
并在views.py中执行CRUD操作:
class LibraryViewSet(viewsets.ModelViewSet):
queryset = Library.objects.all()
serializer_class = LibrarySerializer
Run Code Online (Sandbox Code Playgroud)
这与DDD / Onion体系结构有什么关系(可能进行了适当的修改)?
当模型反映领域(主题、手头的问题)时,它很可能处于 CRUD 的对立面。创建、读取、更新、删除这些操作并不总是属于您的通用语言的一部分。
此外,洋葱/六边形架构要求模型不依赖于任何框架或库代码。反转这些依赖关系并使持久性和交付机制依赖于您的模型是可能的(不在您的域内使用任何 Django 导入),但使用 Django 肯定会很困难。该框架的规定与这一切相反。
归档时间: |
|
查看次数: |
502 次 |
最近记录: |