views.py 작성 1 - Post Method 작성하기
#products/views.py
import json
from django.http import JsonResponse
from django.views import View
from products.models import Menu, Category, Product
class ProductsView(View):
def post(self, request):
data = json.loads(request.body)
menu = Menu.objects.create(name=data['menu'])
category = Category.objects.create(
name = data['category'],
menu = menu
)
Product.objects.create(
name = data['product'],
category = category
)
return JsonResponse({'messasge':'created'}, status=201)
자원(resource)을 생성할 때, Http Method 중에 Post Method를 사용합니다. 또한 로그인 회원가입 등 중요한 정보도 POST method로 데이터를 request의 body에 담아서 client에서 server로 요청합니다.
views.py 작성 2 - Get Method 작성하기
#products/views.py
import json
from django.http import JsonResponse
from django.views import View
from products.models import Menu, Category, Product
class ProductsView(View):
def get(self, request):
products = Product.objects.all()
results = []
for product in products:
results.append(
{
"menu" : product.category.menu.name,
"category" : product.category.name,
"product_name" : product.name
}
)
return JsonResponse({'resutls':results}, status=200)
자원(resource)를 읽어 올 때, http method 중에 GET method를 사용합니다. url만 사용합니다.
url 맵핑해주기
from django.urls import path, include
urlpatterns = [
path('products', include('products.urls'))
]
새로운 View 를 작성 한 후에는, 클라이언트의 요청을 받아 적절한 view 를 맵핑해주는 urls.py 를 작성해주어야 합니다. (만약 동일한 view class 를 사용하고 http method 만 다르다면 동일한 url을 사용하면 됩니다.)