westarbucks라는 이름의 장고 프로젝트 2번째시간
백엔드는 CRUD부터 시작이라고 하셨는데 진짜였다.
머리속이 뒤죽박죽된다는게 이런건가 싶었다....
제일 처음 요청을 받아서 APP에 연결해주는 역할을 한다.
setting.py에 있는 url.py은 요청에대한 처리를 할수없기때문에 app 폴더 안에 urls.py를 새로 만들어
어떠한 view.py의 클래스에 보내줄지 결정한다.
urlpatterns가 list인 이유는 여러개의 경로를 처리해주기 위함이다.
settings.py에 있는 urls.py

app폴더 안에 있는 urls.py

path(' ')인 이유는 products다음에 경로가 없기 때문이다.
경로가 존재할때
urlpatterns = [
# 클래스명으로 지정해주기
path('/Owner', OwnerListView.as_view()),
path('/Dog', DogListView.as_view())
]
views.py

JSON 은 파이썬의 딕셔너리 형태이다.
프론트에서 어떤 요청을 보낼때 자바스크립트를 JSON형태로 http요청에 담아서 요청하고
백에서도 http응답에다가 파이썬안에 있는 자료를 JSON 형태로 담아서 보낸다.
http status 코드 자주쓰는종류
200 : OK
201 : CREATED : 요청을받아서 정상적으로 생성됬을때
400 : BAD REQUEST : 요청에 문제가 생긴다 (포괄적) 프 백 대화를 많이할것
500 : Server Error : 서버에서 에러났을때 생긴다. 프 백 대화 많이할것..
터미널 세팅
서버를 켜놓고 확인해야하기 때문에
mysql, server를 켜놓자!
터미널 칸나누기 command + d

서버 잘 작동되는지 확인하기 (200 OK)

views.py에 로직 짜기
먼저 django shell에가서 잘 작동되는지 확인해보고 vscode를 짜는걸 추천하다.

vscode
import json
from django.views import View
from django.http import JsonResponse
from .models import Menu
class ProductListView(View):
def get(self, request):
menus = Menu.objects.all()
result =[]
for menu in menus:
result.append(menu.name)
return JsonResponse({'result': result}, status=200)
실행결과

name = 카드 value를 요청을받아 메뉴클래스를 만들어보겠다.
import json
from django.views import View
from django.http import JsonResponse
from .models import Menu
python 에서 제공해주는 Json변환기능을 import한다.

http POST localhost:8000/products hello="카드1"
data= 프론트단에서 요청받은 body의 모든내용이 JSON이기때문에 loads라는 메소드를 써서 Python의 딕셔너리 형태로 변경한다.
hello: 키값이고
data['hello'] 는 카드1을 의미한다.
TIP
mac 터미널에서
http -v POST localhost:8000/products name="카드"
하이픈 V를 입력하면 요청한 통신내역을 확인할 수 있다.
예외처리
예외처리를 하여 key값이 다를경우 생기는 오류에 대해서 알려줄수있다.
