From 63493eaeae799cf68961d97dcd2e28b2de2013aa Mon Sep 17 00:00:00 2001 From: JasonHomeWorkstationUbuntu Date: Tue, 20 Oct 2020 15:49:06 +1100 Subject: [PATCH] 3.3 Replace try/except clause using get_object_or_404() --- first_django_app.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/first_django_app.md b/first_django_app.md index 1864f5e..32def6d 100644 --- a/first_django_app.md +++ b/first_django_app.md @@ -203,3 +203,7 @@ Here `path()` function is passed **route** and **view**; two additional option a 如果指定问题 ID 所对应的问题不存在,这个视图就会抛出一个 Http404 异常。 +尝试用 get() 函数获取一个对象,如果不存在就抛出 Http404 错误也是一个普遍的流程。Django 也提供了一个快捷函数, 从而取代try/except语句 + +> 什么我们使用辅助函数 get_object_or_404() 而不是自己捕获 ObjectDoesNotExist 异常呢?还有,为什么模型 API 不直接抛出 ObjectDoesNotExist 而是抛出 Http404 呢? +> 因为这样做会增加模型层和视图层的耦合性。指导 Django 设计的最重要的思想之一就是要保证松散耦合。一些受控的耦合将会被包含在 django.shortcuts 模块中。 \ No newline at end of file