Django 不支持原生依赖注入需手动通过构造函数参数等方式显式传递依赖推荐在视图初始化时传入服务实例避免全局状态、单例污染及 settings 动态导入中小项目优先采用最简构造函数注入方式。依赖注入在 Django 里不是靠框架原生支持的Django 没有内置的依赖注入容器比如 Spring 那种所谓“Django 做依赖注入”本质是手动控制对象创建时机和传递路径靠 Python 的灵活性 Django 的生命周期钩子来模拟。强行套用“注入”概念反而容易写成反模式——比如在 models.py 里塞一堆服务类实例导致迁移失败或测试难 mock。真正可行的做法是把依赖作为参数显式传入或通过函数/方法签名暴露依赖关系而不是藏在全局状态或单例里。服务类如 PaymentService、EmailSender不直接在视图里 import 后调用而是由调用方创建并传入避免在 __init__.py 或 apps.py 中初始化服务实例——它们可能被多次导入引发状态污染如果用类视图优先在 setup() 或 dispatch() 中注入而不是 __init__()Django 会缓存类视图实例用构造函数参数做最简依赖传递推荐给中小项目这是最直白、调试最方便的方式不引入额外抽象也完全兼容 Django 的请求生命周期。你一眼能看出某个视图依赖了什么测试时也能轻松替换 mock。例如一个订单创建视图需要 OrderService 和 InventoryChecker立即学习“Python免费学习笔记深入”class CreateOrderView(View): def __init__(self, order_serviceNone, inventory_checkerNone): self.order_service order_service or OrderService() self.inventory_checker inventory_checker or InventoryChecker() def post(self, request): if not self.inventory_checker.is_in_stock(...): return HttpResponse(Out of stock) return self.order_service.create_order(...)路由配置时传入实例 稿定AI 拥有线稿上色优化、图片重绘、人物姿势检测、涂鸦完善等功能