์ ์ฌ ์์ฌ ์ดํ์,
๋ฉํ ๋์ ERD ๋ชจ๋ธ๋ง ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ๊ณ ๋ชจ๋ธ๋ง ์์ ์ด ์๋ฃ๋์๋ค.(1์ฐจ ํ๋ก์ ํธ ๋์ ๋ค๋ฅด๊ฒ ๋น ๋ฅด๊ฒ ๋ชจ๋ธ๋ง์ด ์๋ฃ๊ฐ ๋์๋ค!!โ๏ธโ๏ธโ๏ธ
๊ณง๋ฐ๋ก,
backend ํ์๋ค ๋ชจ๋ ๊ฐ์ ๋ด๋นํ ๊ธฐ๋ฅ๋ค์ ์ฌ๋น ๋ฅด๊ฒ ๊ตฌํํ๊ธฐ ์์ํ๊ฒ ๋ ๋ ์ด๋ค.๐๐
์ฐ์ , ๋๋ ์ํ์ ์์ธํ์ด์ง ๊ธฐ๋ฅ ๊ตฌํ
๊ณผ ๋ฆฌ๋ทฐ ๊ธฐ๋ฅ ๊ตฌํ
์ ๋ด๋นํ๊ฒ ๋์๋ค.
์ ๋ฌ ํด์ผํ๋ ํ์ ์ ๋ณด = {
'์ํ ์ด๋ฆ',
'์ํ ๊ฐ๊ฒฉ',
'์ํ ๋ธ๋๋',
'์ํ ์ค๋ช ',
'์ํ ์ธ๋ค์ผ ์ด๋ฏธ์ง',
'์ํ์ ์ด๋ฏธ์ง'
}
์์ ์ ๋ณด๋ฅผ ๋ฐํํด์ฃผ๊ธฐ๋ก ํ์๋ค.
์์ ์ ๋ณด๋ฅผ ํ ๋๋ก, get Method
๋ฅผ ์์ฑํ ์ฝ๋(๐)์ด๋ค.
##views.py
import json
from django.http import JsonResponse
from django.views import View
from products.models import Product, Image
class ProductDetailView(View):
def get(self, request, product_id):
try:
product = Product.objects.get(id=product_id)
image = Image.objects.filter(id=product_id)
result = [
{
'name' : product.name,
'price' : product.price,
'brand' : product.brand,
'description' : product.description,
'thumbnail_image_url' : product.thumbnail_image_url,
'image_url' : image[0].url
}
]
return JsonResponse({'message' : result}, status=200)
except Product.DoesNotExist:
return JsonResponse({'message' : 'PRODUCT_DOESNOT_EXIST'}, status=400)
input : ํ๋ก ํธ๊ฐ ์ฃผ์๋ก ๊ฑด๋ค์ฃผ๋ parameter ๋ง๊ณ ์์
(์ฐ์ ์ path parameter๋ฅผ ์ ์ฉํ์ฌ ์์ฑํ์์ง๋ง,
+์ถ๊ฐ๋ก query parameter๋ก ์์ฑํด๋ณด๊ธฐ๋ก)
pathparameter๋ก ์ ๋ฌ ๋ฐ๊ธฐ์ํด,
urls.py๋ ์๋(๐)์ ๊ฐ์ด ์์ฑํ์๋ค.
##products app - urls.py
from django.urls import path, include
from .views import ReviewView
urlpatterns=[
path('/<int:product_id>', ReviewView.as_view()),
]
product๊ฐ image๋ฅผ ์ญ์ฐธ์กฐํ์ฌ ์์ฑํ๋ ๊ฒ์ด shell์ ์
๋ ฅํ๋ ๊ฒ์กฐ์ฐจ ํ๊ฐ๋ ค์
Product ํ
์ด๋ธ์ด ์๋,
Image ํ
์ด๋ธ์์ image_url์ ์ ์ฐธ์กฐํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ์๋ค.
๋ค์ ์ญ์ฐธ์กฐ๋ฅผ ๊ณต๋ถํ ํ์,
Product์์ Image๋ฅผ ์ญ์ฐธ์กฐ(_set()
)ํ๋ ์ฝ๋๋ฅผ ์์ ํด ๋ณด๋ ค๊ณ ํ๋ค.