파이썬/장고 웹서비스 개발 완벽 가이드 with 리액트 강의를 듣고 정리한 글입니다.
200번대: 성공
300번대: 요청을 마차기 위해 추가 조치가 필요하다.
400번대: 클라이언트측 오류 (잘못된 요청)
500번대: 서버측 오류
상태 코드 | 설명 |
---|---|
200 | 서버가 요청을 잘 처리했다. (OK) |
201 | 작성됨. 서버가 요청을 접수, 새 리소스를 작성 |
301 | 영구 이동. 요청한 페이지가 새 위치로 영구적으로 이동했다. |
302 | 임시 이동. 페이지가 현재 다른 위치에서 요청에 응답하고 있지만, 요청자는 향후 원래 위치를 계속 사용해야 한다. |
400 | 잘못된 요청 |
401 | 권한 없음. 인증이 필요하다. |
403(Forbidden) | 유저가 인증을 했지만 필요한 권한을 가지고 있지 않아서 요청을 거부 |
404 | 서버에서 요청한 리소스를 찾을 수 없다. |
405 | 허용되지 않는 방법. POST 방식만을 지원하는 뷰에 GET 요청을 하는 경우 |
500 | 서버 내부 오류 발생 |
from django.http import HttpResponse, JsonResponse
from django.shortcuts import render
# HttpResponse 성공 응답
def view1(request):
return HttpResponse('Hello, Ask Company')
# render를 이용한 HttpResponse 성공 응답
def view2(request):
return render(request, 'template.html')
# jsonResponse 성공 응답
def view3(request):
return HttpResponse('Hello, Ask Company')
from django.http import HttpResponseRedirect
from django.shortcuts import redirect, resolve_url
# 비 추천 방법
# HttpResponseRedirect를 직접 사용할 일은 적다.
# resolve_url함수로 URL Reverse를 활용하였다.
def view2(request):
url = resolve_url('shop:item_list')
return HttpResponseRedirect(url)
# 추천 방법
def view3(request):
# 내부적으로 resolve_url을 사용한다.
# 인자로 지정된 문자열이 url reverse에 실패할 경우, 그 문자열을 그대로 URL로 사용하여 redirect 시도
return redirect('shop:item_list')
# 방법1 - 예외처리를 통해 오류 발생 시 404 응답
def view1(request):
try:
item = Item.objects.get(pk=100)
except Item.DeosNotExist:
raise Http404
# 생략
# 방법2 - 방법1과 같은 로직. 내부적으로 방법1처럼 raise Http404 활용
def view2(request):
item = get_object_or_404(Item, pk=100)
# 생략
IndexError
, KeyError
, django.db.models.ObjectDoesNotExist
등