대표적인 상태 코드
코드 | 설명 |
---|---|
200번대 | 성공 |
200 | 서버가 요청을 잘 처리했다. |
201 | 작성완료. 서버가 요청을 접수하고, 새 리소스를 작성했다. |
300번대 | 추가 조치가 필요하다. |
301 | 영구 이동, 요청한 페이지가 새 위치로 영구적으로 이동했다. |
302 | 임시 이동, 페이지가 현재 다른 위치에서 요청에 응답하고 있지만, 요청자는 향후 원래 위치를 계속 사용해야한다. |
400번대 | 클라이언트 오류 |
400 | 잘못된 요청 |
401 | 권한없음 |
403 (Forbidden) | 권한을 갖고 있지않아서 요청이 거부됨 |
404 | 서버에서 요청한 리소스를 찾을 수 없음 |
405 | 허용되지 않는 방법. POST 방식만을 지원하는 뷰에 GET 요청을 한 경우 |
500번대 | 서버 오류 |
500 | 서버 내부 오류 발생 |
200 응답 예
from django.http import HttpResponse, JsonResponse from django.shortcuts import render def view1(request): return HttpResponse('Hello') # 200 def view2(request): return render(request, 'template.html') # 200 def view3(request): return JsonResponse({'hello': 'world'}) # 200
302 응답 예
from django.http import HttpResponseRedirect from django.shorcuts import redirect, resolve_url def view1(request): return HttpResponseRedirect('/shop/') def view2(request): url = resolve_url('shop:item_list') return HttpResponseRedirect(url) # 이 방법을 사용하는 것을 추천한다. def view3(request): return redirect('shop:item_list')
404 응답 예
from django.http import Http404, HttpResponseNotFound from django.shortcuts import get_object_or_404 from shop.models import Item def view1(request): try: item = Item.objects.get(pk=100) except Item.DoesNotExist: raise Http404 ... def view2(request): item = get_object_or_404(Item, pk=100) # 내부에서 raise Http404 ... # 잘 사용하지 않는 방법 def view3(request): try: item = Item.objets.get(pk=100) except Item.DoesNotExist: return HttpResponseNotFound() ...
다양한 HttpResponse 서브 클래스
코드 | 설명 |
---|---|
HttpResponseRedirect | 상태코드 302 |
HttpResponsePermanentRedirect | 상태코드 301(영구 이동) |
HttpResponseNotModified | 상태코드 304 |
HttpResponseBadRequest | 상태코드 400 |
HttpResponseNotFound | 상태코드 404 |
HttpResponseForbidden | 상태코드 403 |
HttpResponseNotAllowed | 상태코드 405 |
HttpResponseResponseGone | 상태코드 410 |
HttpResponseServerError | 상태코드 500 |
'DevOps > Django' 카테고리의 다른 글
[Django] 프로젝트 세팅 ( + React ) (0) | 2022.12.16 |
---|---|
[Django] SENDGRID를 이용한 메일 보내기. (0) | 2022.11.10 |
[Django] ForeignKey (0) | 2022.05.17 |
[Django] django-debug-toolbar 사용하기 (0) | 2022.05.16 |
[Django] django extensions shell_plus 사용하기 (0) | 2022.05.16 |