Django에서 View란 Client에서 보낸 Request에 대해서 Response을 보내주는 역할을 한다. 세부적으로는 View는 Django 필요한 데이터를 모델에서 가져와서 적절히 가공하여 웹 페이지 결과를 만들도록 한다.
Model 작성하기
view 작성하기 전에 model.py를 만들어서 makemigration과 migrate가 먼저 선행되어야 한다.
View 작성하기
app 폴더 내에 views.py에 코드를 작성한다. 해당 예제는 client에서 request(post)을 했을 때 이에 대해서 response를 주는 것이다.
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)
├── manage.py
├── app_name
│ ├── models.py
│ ├── urls.py
│ └── views.py
└── project_name
└── urls.py : main urls.py
from django.urls import path, include
urlpatterns = [
path('받을이름', include('앱이름.urls'))
]
예제에 맞춰 생각해보자. view.py에서 만든 class ProductView의 post 메소드를 사용하겠다는 요청이 오는 것을 urls.py를 통해서 연결해 줄 수 있다.
from django.urls import path
from products.views import ProductsView
urlpatterns = [
path('', ProductsView.as_view()),
]