CRUD #2

인간·2022년 7월 4일
0

products/views.py

임포트도 순서가 있다.

import json #첫번째는 제이슨

from django.http import JsonResponse #두번째는 PIP를 적어준다.
from django.views import View 

from products.models import Menu, Category, Product 

class ProductsView(View):
뷰클레스 임포트 어떠한 데이터를 다룰건지 나타낸다. 프로덕트 데이터를 저장하는거 함수 하나하나가 API

def post(self, request):
#셀프 다음 꼭 request 라고 적어주는게 좋다
data = json.loads(request.body) #가장 중요하다.
Request 바디로오는건 거의 json타입이다.
json타입은 파이썬에서 못써서 가공이 필요하다.
보통 딕셔너리로 바꿈. body에는 클라이언트에 정보가 담겨있다.
내 메소드랑 http메소드랑 이름이 일치해야한다.

menu1 = Menu.objects.create(name=data['menu'])
딕셔너리에 데이터를 가져오는 형태랑 같음.
Data는 요청에 지금 데이터는 딕셔너리다 위에서 변형해줬다.
키가 없을수도 있어서 키 에러에 대한 예외처리를 해준다.

키랑 벨류를 프론트가 만든다. 키값을 같이 맞춰야한다. 프론트랑 데이터 안들어온다라는 소리가 안 나오게 소통이 필요하다. 생성을 하면 객체가 리턴이된다. 저장하고 저장과 동시에 저장이된다. 바로 파이썬에서 사용할 수 있다.

category1 = Category.objects.create(
        name = data['category'],
        menu =  menu1
)
Product.objects.create(
        name     = data['product'], 
        category = category1
    )
return JsonResponse({'messasge':'created'}, status=201) 
리스폰스가 제이슨형태로 나가는데 첫번째 인자로 딕셔너리를 넣어준다.
이 제이슨리스폰스 객체가 딕셔너리를 제이슨으로 바꿔준다. 

API를 만들고 API를 요청하는 주소를 우리가 만든다. 그게 urls이다.

Main urls.py 어떤앱에서

http://127.0.0.1:8000/products 어느 컴퓨터에서나 로컬호스트임 콜론(:) 다음에는 포트를 지정해준다. 포트란 쉽게 말해 프로그램의 위치다!
예를들어 내가 mysql을 쓴다하면 저 IP로는 그 프로그램의 위치를 알 수가 없다. 그래서 3665라는 포트를 통해 위치를 알려주는거다.
그리고 products.urls.py를 써준다는건
다음 요청을 products로 넘기겟다라는 뜻

From products.views import productsView

Urlpatterns = {
path(“/abc”, ProductsView.as_view()) #ProductsView 해당경로에 메소드를 찾아주고 그거에대한 에러 메세지를 보내준다.

“””
http://127.0.0.1:8000/products/abc 위에 path abc와 같아야한다. 슬래쉬까지 완벽하게 같아야한다.

get은 객체를 불러온다.

Queryset은 객체를 꺼내는 작업이 필요합니다.

그래서 리턴값을 항상 기억해야한다.

profile
잇츠미

0개의 댓글