멋사 열네 번째 과제

olhsg·2023년 8월 7일
1

멋쟁이 사자처럼

목록 보기
14/15
post-thumbnail

이번 시간에는 장고로 온라인샵을 구현하는 예제를 계속 이어서~
쿠폰 기능을 구현할 것이다!

1. 앱 추가

우선 터미널에 앱을 추가한다.

python manage.py startapp coupon 

명령어를 입력한 뒤 settings.py 파일의 INSTALLED_APPS 부분에 'coupon'을 추가한다.

2. model 생성


쿠폰 앱에서의 모델 파일에 쿠폰 모델을 생성한다. 차례대로 쿠폰 코드, 사용 기간(from~to), 할인 금액, 쿠폰 활성화 여부를 필드로 지정한다.
모델을 다 작성했으면 DB에 반영하기 위한 코드를 콘솔에 작성하는 것을 잊지 말자!

python manage.py makemigrations coupon
python manage.py maigrate

3. Cart Class 수정

지난 시간에 작성했던 장바구니 앱에서의 class를 수정해 줄 것이다. 왜냐하면 쿠폰 기능은 대체적으로 장바구니에서 사용하기 때문이다.

장바구니 앱의 cart.py 파일을 수정한다.

from coupon.models import Coupon

앞서 등록한 쿠폰 모델을 호출하는 코드를 작성한 뒤


위 코드를 추가한다.

위 코드들은 세션에 저장된 쿠폰 아이디 값을 이용하여 장바구니에서 할인금액과 전체 금액 계산을 하기 위함이고,

장바구니를 비울 때 쿠폰 정보 역시 비워야 하기 때문에 쿠폰 아이디 값을 None으로 설정하는 코드를 추가한 것이다.

4. form 작성

쿠폰의 정보를 전달할 폼을 작성해야 한다.
쿠폰 앱에서 forms.py 파일을 생성한 뒤 코드를 입력한다.
폼을 통해 쿠폰 데이터(쿠폰 코드)를 전달하는 것이다!


5. view 작성

쿠폰 앱에서 views.py 파일은 위와 같이 작성한다.

우선 쿠폰 추가 뷰는 메소드가 POST만 허용하도록 데코레이터를 설정하였다.
(쿠폰 입력이 POST이니까)
그 후 POST 된 쿠폰 코드를 이용해서 쿠폰을 조회하고,
조건문을 사용해서 검색한 쿠폰이 존재하면 쿠폰 아이디 값을 세션에 저장하고
쿠폰이 존재하지 않는다면 쿠폰 세션은 None으로 저장한 뒤 장바구니로 리디렉션 값을 준다.


6. url 작성


쿠폰 앱의 urls.py 파일에는 위처럼 코드를 작성한다.

그리고 쿠폰 앱의 url이 작동할 수 있도록 프로젝트 urls.py 파일에도 코드를 추가해야 하므로 config/urls.py 파일에 아래 코드를 추가한다.

path('copon/', include('coupon.urls')),

7. cart.py 코드 수정

다시 장바구니 앱의 cart.py 파일로 와서 코드를 추가한다.

데코레이터를 사용해서 코드를 좀 더 간결하게 작성했다.
우선 쿠폰 아이디 값으로 쿠폰을 리턴하는 쿠폰 함수와
상품의 총 금액이 쿠폰 할인 금액보다 클 경우 쿠폰 할인 금액을 리턴하는 할인 금액 함수를 작성하고,
마지막으로 상품의 총 금액에서 쿠폰 할인 금액을 뺀 총 금액 함수를 정의한다.

8. 장바구니 view 수정

마지막으로! 장바구니 앱의 views.py 파일을 수정해준다.

위 코드처럼 쿠폰을 추가할 수 있는 폼을 추가해서, add_coupon을 템플릿 변수로 전달하도록 코드를 추가한다.

9. 템플릿 파일 추가


앞서 작성했던 장바구니의 detail.html 파일에 위 코드를 추가하여 쿠폰을 등록할 수 있도록 하는 템플릿 코드를 추가해 준다.

10. 관리자 페이지 등록

쿠폰 앱의 admin.py 파일에서

모델에서 작성한 필드들을 추가해 줘서 관리자가 쿠폰을 생성하고, 관리할 수 있도록 한다!
이것으로 이번 주 과제는 끝이답.......!

profile
누구보다 밝게 코딩하기♡

1개의 댓글

comment-user-thumbnail
2023년 8월 7일

재미있게 봤습니다. 흥미롭군요^^

답글 달기