2nd [Hines] ๐Ÿ’ซ3Day

์ด์œ ์ง„ยท2021๋…„ 12์›” 15์ผ
0

2nd_project(Hines)

๋ชฉ๋ก ๋ณด๊ธฐ
2/6
post-thumbnail

์ ์‹ฌ ์‹์‚ฌ ์ดํ›„์—,
๋ฉ˜ํ† ๋‹˜์˜ 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())ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด ๋ณด๋ ค๊ณ  ํ•œ๋‹ค.

profile
์ฐจ๊ทผ์ฐจ๊ทผ ๋ฐฐ์›Œ๋‚˜๊ฐ€๋Š” ์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€