전체적인 Django 흐름
- 사용자가 url 요청을 보냄
- 요청된 url은 최상위 url 파일로 이동함
urls.py
from django.urls import path, include
urlpatterns = [
path('products', include('products.urls')),
]
- url은 최상위 url 파일에서 사용자가 요청한 경로의 앱의 url로 이동함.
products.urls
from django.urls import path
from django.urls.resolvers import URLPattern
from products.views import ProductsView
urlpatterns = [
path('', ProductsView.as_view()),
]
- 앱 안의 url에서 역할에 맞는 각자의 view로 이동함
products/view.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.korean_name
}
)
return JsonResponse({'results':results}, status=200)
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(
category = category,
korean_name = data['product_kor_name'],
english_name = data['product_eng_name'],
description = data['product_desc'],
)
return JsonResponse({'MESSAGE':'CREATED'}, status=201)
- 사용자의 request method에 따라서 맞는 요청을 반환하게 된다.
- 위에서는 post와 get 메서드에 따라 다른 메서드를 반환한다.