onlineshop 제작기 #2

이번 포스팅에 수정하기로 했던 에러는 오타였다!!!

장고 MVT 패턴에서 뷰 혹은 템플릿 부분에 오류가 있을 것 같아 관련된 부분을 열심히 보고 찾았다.

장바구니 세션인 cart.py, cart/detail.html, cart/view.py.

이 세 파일을 집중적으로 확인했고 결국 찾았다.

들여쓰기 문제였다. ㅠㅠ

수정 전

def detail(request):
    cart = Cart(request)
    # 제품 수량 수정을 위해서 폼을 제품마다 하나씩 추가, 수량은 수정하는 대로 반영해야 하기 때문에 is_update를 True로 설정
    for product in cart:
        product['quantity_form'] = AddProductForm(initial={'quantity': product['quantity'], 'is_update': True})
        return render(request, 'cart/detail.html', {'cart': cart})

수정 후

def detail(request):
    cart = Cart(request)
    # 제품 수량 수정을 위해서 폼을 제품마다 하나씩 추가, 수량은 수정하는 대로 반영해야 하기 때문에 is_update를 True로 설정
    for product in cart:
        product['quantity_form'] = AddProductForm(initial={'quantity': product['quantity'], 'is_update': True})
    return render(request, 'cart/detail.html', {'cart': cart})

수정 전 코드 상에서는 product에 폼을 설정해줄 때 cart에 몇 개의 프로덕트가 있던 상관없이 제일 처음의 product에만 폼을 추가해 return해 페이지를 render하기 때문에 에러가 났던 것이다.

수정하고 나면 모든 product에 폼을 추가하고 페이지를 render하기 때문에 원하는대로 수정되어 페이지가 출력되는 것을 확인할 수 있다.

원래 주력언어로 java를 사용하고 있는데 웹 개발에 빠른 입문을 위해 django를 사용하다 다른 환경에 익숙치 않아 발생한 문제였다.

좋은 웹페이지 즐겨찾기