Django MVC理念和使用get_object_404代替raise404

Django MVC理念和使用get_object_404代替raise404,django,python-3.x,model-view-controller,web-development-server,Django,Python 3.x,Model View Controller,Web Development Server,我基本上对使用get\u object\u或\u 404()背后的动机感到困惑 当我读Django文档时,它说 哲学 为什么我们使用助手函数get\u object\u或\u 404()而不是 自动捕获较高级别的ObjectDoesNotExist异常 级别,或使模型API升高Http404而不是 ObjectDoesNotExist? 因为这样会将模型层耦合到视图层。什么之中的一个 Django的首要设计目标是保持松耦合。 django.shortcuts模块中引入了一些受控耦合 当他们说它将

我基本上对使用
get\u object\u或\u 404()
背后的动机感到困惑

当我读Django文档时,它说

哲学

为什么我们使用助手函数
get\u object\u或\u 404()
而不是 自动捕获较高级别的
ObjectDoesNotExist
异常 级别,或使模型API升高
Http404
而不是
ObjectDoesNotExist?

因为这样会将模型层耦合到视图层。什么之中的一个 Django的首要设计目标是保持松耦合。
django.shortcuts
模块中引入了一些受控耦合


当他们说它将“模型层与视图层”耦合时,这是什么意思?它是如何做到的?

模型层不应该关心我们提出的HTTP错误代码(因为模型应该独立于Web服务器向外界公开的内容工作)。因此,在模型层,需要一个
ObjectDoesNotExists
,而视图可以在404中显示它。但因为这是一个非常典型的模式,所以它被封装了。