3.3 Replace try/except clause using get_object_or_404()

master
Jason Zhu 2020-10-20 15:49:06 +11:00
parent 95ae21ce89
commit 63493eaeae
1 changed files with 4 additions and 0 deletions

View File

@ -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 模块中。