티스토리 뷰

Magazine B는 제품 리스트에서 상세페이지까지 모두 query patameter를 사용했지만, 프로젝트에서는 제품 리스트페이지만 query parameter를 사용했고, 제품 상세 페이지는 path variable를 사용하여 구현하기로 했다.

 

Magazine K 상세페이지

→ restful api 구현을 위해 path variable사용한다.

 

→ 등록되지 않은 제품(ex. ~/products/100)의 url 주소로 접속시 404 error 반환한다.

 

 

urls.py

# products.urls.py 파일
urlpatterns = [
    path('', ProductView.as_view()),
    path('/<int:product_id>', ProductDetailView.as_view()),
]

 

 

아래 주소와같이 지정한 url 주소에 product_id 값 (아래 url 예시에서는 '10'이다)을 받아 views.py에서 로직을 실행한다.

url 예시

http://127.0.0.1:8000/products/10

views.py

인자로 받은 product_id 값으로 product table에서 정보를 가져와 제품에 대한 정보를 클라이언트에게 전달한다.

# products.views.py 파일

class ProductDetailView(View):
    def get(self, request, product_id):
        try :
            product  = Product.objects.get(id=product_id)

            results = {
                    'category'         : product.main_category.name,
                    'issue_number'     : product.issue_number,
                    'title'            : product.title,
                    'price'            : product.price,
                    'language'         : product.language,
                    'size'             : product.size,
                    
                    # 이하 생략 ...

 

프로젝트 영상

 

댓글