def get_object_or_404(klass, *args, **kwargs):
queryset = _get_queryset(klass)
if not hasattr(queryset, 'get'):
klass__name = klass.__name__ if isinstance(klass, type) else klass.__class__.__name__
raise ValueError(
"First argument to get_object_or_404() must be a Model, Manager, "
"or QuerySet, not '%s'." % klass__name
)
try:
return queryset.get(*args, **kwargs)
except queryset.model.DoesNotExist:
raise Http404('No %s matches the given query.' % queryset.model._meta.object_name)
코딩 공부하다보면 뜯어보는 걸 해보라 해서 자주 썼던 get_object_or_404를 보기로 했다.
board = get_object_or_404(Sneakers,id = s_id)
기본적으로, 사용했던 코드와 비교하며 보면 맨 앞에 들어가는 파라미터가 찾고자 하는 모델의 이름이 들어가줘야 한다.
만일, 주어진 모델이름이 없거나 모델값이 주어지지 않으면 에러메세지가 반환이 되며,
정상적으로 다음으로 넘어간다면 주어진 파라미터값의 조건을 가진 쿼리셋을 반환하여 준다.
만일 조건에 맞는 값이 발견되지 않는다면 Http404error를 반환하게 만들어 주었다.
또한, 들어가서 보다보니 단일값이 아닌 리스트를 반환하게 해주는 것
(get_list_or_404)도 알게 되었는데,
이는 나중에 필요하면 써보는 것도 좋을 것 같다.
돌아가는 것을 더 깊이 안다면 선택적으로 사용하는 것이 맞다고 생각하기에 그렇다.