两个有什么区别下面的句子
from django.shortcuts import get_object_or_404
和
from rest_framework.generics import get_object_or_404
两个有什么区别下面的句子
from django.shortcuts import get_object_or_404
和
from rest_framework.generics import get_object_or_404
django.shortcuts.get_object_or_404
如果传递的 kwarg 的类型与所需的类型不匹配,则可能会引发除Http404
(即TypeError
,ValueError
和) 以外的错误。ValidationError
因此 ,即使在这些情况下,由于 DRF 在内部使用该函数并且传递的数据很容易无法匹配所需的数据类型,从而导致意外的 500 错误,因此rest_framework.generics.get_object_or_404
只是简单地进行包装。django.shortcuts.get_object_or_404
Http404
这可以从 DRF 的源代码 [GitHub]中看到:
from django.shortcuts import get_object_or_404 as _get_object_or_404 def get_object_or_404(queryset, *filter_args, **filter_kwargs): """ Same as Django's standard shortcut, but make sure to also raise 404 if the filter_kwargs don't match the required types. """ try: return _get_object_or_404(queryset, *filter_args, **filter_kwargs) except (TypeError, ValueError, ValidationError): raise Http404