view는 사용자의 요청을 받아서 어느 데이터베이스에 접근해서 어떤 데이터를 가공 해야할지를 알려준다.
# project파일.urls.py
from django.urls import path,include
urlpatterns = [
path('owner', include('owner.urls'))
]
앱을 하나 만들면 프로젝트.urls.py에 앱까지 가는 길을 만들어 준다.
import json
from django.http import JsonResponse
from django.views import View
from owner.models import Owner,Dog
class OwnerView(View):
def post(self, request):
data = json.loads(request.body)
owner = Owner.objects.create(
name=data['name'],
email=data['email'],
age=data['age']
)
return JsonResponse({'MESSGAGE': 'SUCCESS'}, status=201)
=> hhtp 통신을 할때 가장 많이 쓰이는 것이 json이다.
앱 urls.py: 창구에서 어느 기능을 해야되는지 알려주는것
from django.urls import path
from owner.views import DogView,OwnerView
urlpatterns =[
path('/dog', DogView.as_view()), #DogsView로 가는 것을 알려줌
path('/owner', OwnerView.as_view()) #Ownerview로 가는 것을 알려줌
]
이렇게 view파일을 다 작성하고 나서 http 작성할때는
# http -v method_name localhost:8000/프로젝트url/앱url
http -v GET localhost:8000/owner/dog
프로젝트.urls.py 작성 -> 뷰.class 작성 -> 앱.urls.py 작성
1. start-line
시작줄에는 실행되어야 할 요청이나 요청 수행에 대한 성공, 실패가 기록되어 있고 이줄을 항상 한줄로 끝난다. (http- method 작성)
2. HTTP headers
hhtp headers는 요청에 대한 설명이나 메시지 본문에 대한 설명이 들어간다.
3. empty line
요청에 대한 모든 정보가 전송되 었음을 알리는 빈줄
4. body
요청과 관련된 내용이 옵션으로 들어가거나, 응답과 관련된 문서가 들어간다. 본문의 존재 유무 및 크기는 첫 줄과 HTTP 헤더에 명시된다. (메시지의 내용을 담고 있는 부분)
100번대: 사용자의 요청이 현재 처리되고 있음을 의미.
200번대: 서버가 사용자의 요청에 대해 성공적으로 처리했다는 것을 의미.
300번대: 사용자가 요청을 마치기 위해 추가 동작을 해야 함을 의미.
400번대: 사용자측의 에러가 발생했음을 의미
500번대: 서버 측 에러가 발생했음을 의미
1) 클라이언트가 서버에게 웹페이지를 보여달라고 말하는 것을 요청이라고 부르고
2) 서버가 클라이언트에게 요청받은 것에 대한 대답으로 웹페이지 내용을 표현하기 위해 html문서로 주는 것을 응답이라 부른다.
클라이언트가 서버에 데이터를 요청하면 서버는 데이터베이스에 클라이언트가 원하는 해당 데이터를 가지고 와서 클라이언트에게 넘겨준다.
예) 사용자가 게시글을 클릭해서 읽는 경우
예) 게시글을 작성하는 경우