만약 업로드된 물품이 하나도 없을 시 물품을 등록해달라는 문구를 홈페이지에 띄어진다면
사용자가 빈 홈페이지를 보는 것보다 덜 어색함을 느낄 것이다.
따라서 업로드한 물품 데이터를 먼저 삭제해보겠다.
장고 관리자 페이지에서도 삭제할 수 있지만 이번엔 장고ORM을 이용해서 지워보자
python manage.py shell 로 쉘을 열고
from store.models import Item 으로 Item 모델을 불러온다.
Item.objects.all().delete() 으로 모든 게시물을 삭제한다.
이제 item_list.html에 물품을 등록해달라는 문구를 넣는다,
업로드된 물품이 있을 때는 기존 코드가 수행되고
물품이 없을 때 등록된 물품이 없다는 글이 출력된다.
이번에는 http://127.0.0.1:8000/item/100/ 처럼 존재하지 않는 물품의 아이디의 url에 접근하려 했을 때 404에러를 일으켜보자
views.py에서 item_detail 함수를 수정한다.
get_object_or_404 메서드를 이용해서 아이템의 아이디가 존재할 때는 데이터객체를 가져오고 그렇지 않을 떄는 http404에러를 일으킨다.
마찬가지로 item_update와 item_delete도 똑같이 수정해준다.
404에러가 잘 출력된다.
만약 물품이 많이 등록되어진다면 홈페이지의 스크롤이 너무 길어질 것이다.
따라서 물품 리스트를 페이지를 통해 관리하는게 좋다.
먼저 테스트를 위한 더미 데이터를 시딩을 해보자
pip install django-seed==0.2.2 명령어를 입력해서 장고 시드를 설치한다.
그 후 settings.py에 INSTALLED_APPS에 'django_seed'를 추가한다.
다시 터미널에 python manage.py seed store --number=50 을 입력한다.
그럼 데이터 50개가 추가된걸 볼 수 있다.
이제 물품을 10개 단위로 나눠서 페이지를 나눠보자
일단 views.py에
그리고 post_list 함수를 수정한다.
페이지네이터로 items를 10개 단위로 나눠서 페이지를 만든다,
우리는 page라는 네임으로 값을 전달했으므로
GET.get('page')를 통해 page의 쿼리스트링에 접근한다.
만약 처음 메인페이지에 접근하면 아직 쿼리스트링이 붙지않은 상태여서 curr_page_number가 None일때 1로 설정해준다.
이제 item_list.html를 수정한다.
그럼 페이지네이션이 잘 적용된걸 볼 수 있다.
'개발 > 파이썬' 카테고리의 다른 글
중고거래 사이트 만들기 2 (0) | 2022.05.21 |
---|---|
중고거래 사이트 만들기 1 (0) | 2022.05.21 |
전자상거래 웹사이트 만들기 4 (0) | 2022.05.16 |
전자상거래 웹사이트 만들기 3 (0) | 2022.05.16 |
전자상거래 웹사이트 만들기 2 (0) | 2022.05.13 |