一款 Python 语言 Django 框架 DDD 脚手架,适合快速搭建项目
一个开箱即用的 DDD (领域驱动设计) Python 脚手架,基于 Django 5 + DRF + drf-spectacular ,包含双数据库、统一响应、全局异常与事件驱动示例。
这是什么
Django-DDD 是一个精心打造的 Python 语言 DDD 工程脚手架,帮你快速搭建符合 DDD 精髓的 Web 服务。项目内置用户与订单示例、领域事件与内存总线、多数据库路由、统一响应与全局异常处理,适合作为团队工程模板,给 AI 提供代码规范参考。
为什么要用 DDD ?
很多人认为 Python 没必要用 DDD ,毕竟它和 Ruby 、JS 一样轻巧灵活,Django 自带的 MTV ( Model-Template-View )拿来就能写。确实,大多数场景下"数据驱动"的 Django 模式完全够用。
工程化无非是把接口处理、业务逻辑、数据处理区分开,让各部分各司其职,方便维护和扩展。DDD 相对更适合中大型项目:如果项目有几十个模块、上百个接口,用 DDD 设计会更合适;模块少、接口不多的话,简单分层就够了。
项目做大以后,会遇到三个常见问题:
- 业务规则散落在各处:View 里判断状态,Model 里写校验,Service (如果有)里再来一次
- Model 太胖:既承担持久化,又承担业务逻辑,测试必须起 Django 才能跑
- 强耦合 Django:业务代码离不开
django.db.models,替换存储引擎几乎是重构
本脚手架遵循务实 DDD:抓住精髓(分层 + 领域模型 + 仓储抽象 + 领域事件),不死守概念(不做 CQRS 、不强制事件溯源、不要求每个业务都建聚合)。总之,是否采用 DDD 和语言无关,只跟业务规模有关。
源码地址:https://github.com/microwind/design-patterns/tree/main/practice-projects/django-ddd