티스토리 뷰

  ● 상품 상세보기   

 

product/views.py

- 존재하는 모든 상품의 정보를 가져온다. 만약 모든 제품이 아니라 특정 제품만 표시하고싶다면 필터링 지정하면 된다. 어떤식으로 queryset에 저장되는지 궁금해서 출력해봤더니 queryset은 상품의 객체를 리스트 형태로 가져오는 것을 알 수 있다.

- 렌더링할 product_detail.html 에 queryset을 전달하는데 'product'라는 이름으로 전달되도록 한다. 만약 context_object_name 을 따로 지정하지 않으면 default 값은 object가 된다. 

class ProductDetailView(DetailView):
    template_name = "product_detail.html"
    queryset = Product.objects.all()
    context_object_name = 'product'

 

 

 

 

templates/product_detail.html

- ProductDetailView에서 전달받은 product 객체의 정보를 화면에 표시한다. 

- 상품 설명란에 있는  | safe 처리를 하지 않으면 summernote 에 작성한 글들과 사진들이 모두 태그가 텍스트 형태로 나타난다. 태그를 텍스트 형태가 아닌 태그 자체로 인식하기 위해서 | safe 를 추가하는 것이다.

{% extends 'base.html' %}
{% load humanize %}
{% block contents %}

<div class = "row mt-5">
    <div class = "col-12">
        <div class = "card" style = "width:100%">
            <div class = "card-body">
                <h5 class = "card-title">{{product.name}}</h5>
            </div>
            <ul class = "list-group list-group-flush">
                <li class = "list-group-item">상품 가격 : {{ product.price | intcomma }} 원</li>
                <li class = "list-group-item">남은 수량 : {{ product.stock}}</li>
                <li class = "list-group-item">등록 날짜 : {{ product.registered_date|date:'Y-m-d H:i'}}</li>
                <li class = "list-group-item">{{ product.description|safe }} </li>
            </ul>
        </div>
    </div>
</div>

{% endblock %}

 

 

상품 상세보기 페이지로 들어가면 다음과 같이 나온다. 사진과 글이 태그로 인식되어 잘 나오는 것을 알 수 있다.

 

댓글