Skip to content

Instantly share code, notes, and snippets.

@perhapsspy
Last active June 18, 2018 07:37
Show Gist options
  • Star 8 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save perhapsspy/23dce1f537447dffed4abb2573264767 to your computer and use it in GitHub Desktop.
Save perhapsspy/23dce1f537447dffed4abb2573264767 to your computer and use it in GitHub Desktop.

제가 일하는 방식 : 필요 -> 공부 -> 적용 (파이썬/Django는 이런 프로세스에 알맞은 생태계를 가진거 같음)

필요: 거의 혼자서 쇼핑몰을 만들어야하는 상황 공부: 쇼핑몰 대체 어떻게 만드는거야?! 적용: 발표 내용

이미지 파일 다루기

  • 스토리지 : 아마존 s3. CDN : CF
  • 이미지 썸네일 패키지 : django-versatileimagefield
  • 실제 모델 구성과 사용 예

배송 확인

이메일 전송 / 꾸미기

  • 가입시, 결제시, 문의 답변시 등 사용됨(커머스에서 필수)
  • 아마존 SES를 사용 (django-ses)
  • 메일클라이언트에서 지원하는 CSS는 매우 제한적 > django-inlinecss 패키지 구해서 끼얹기
  • 하위호환을 위해 텍스트와 html 버전을 모두 넣어서 보냄
  • 이미지는 최소한으로 로고만 넣음

결제

  • 마침 아임포트에서 api 서비스를 제공
  • 아임포트 restful api 사용하는 공식 패키지를 직접 만듬(https://github.com/iamport/iamport-rest-client-python)
  • 결제 로직 호출은 javascript로 프론트에서 이루어짐
  • 리다이렉트 url을 통해 통보 받는 백엔드에서 api를 이용해 검증 후 결제 처리
  • 처음엔 검증 로직이 데스크탑과 모바일이 다른 분기로 이루어졌으나, 데스크탑도 모바일 처럼 리다이렉트 처리하게 개선함
  • 부분 취소 같은건 아직 구현 안됨
  • 12개월 무이자 할부 기능은 아임포트측과 거의 라이브로 개발되어 들어감

API

  • 북스토어 정보를 외부에서 접근(재고 관리나 배송 확인 등)
  • DRF 로 간단히 구현
  • 토큰 방식 인증
  • viewsets을 많이 씀

리포트

  • 정산, 회원/주문 모니터링
  • django aggregation 활용
  • excel mixin 만들어서 재활용
  • 최대한 단순한 작업으로 리포를 추가하기 좋게 만듬
  • admin-lte 프레임워크로 프론트 구성

관리자

  • django admin을 커스텀하여 활용
  • 목록 편집, 썸네일 넣기, 입력 필드 추가, 관계 모델 편집
  • admin에서 제품 설명 미리보기 구현

디자인

  • http://materializecss.com/ 을 베이스로 활용
  • 모바일 친화적 반응형 디자인(실제로 모바일 결제율이 매우 높은 커머스가 됨)
  • ajax는 장바구니에만 일부 적용.
  • css는 less를 활용(sass는 컴파일을 위해 루비를 추가 설치해야해서 빠짐)

UTM 추적

  • 결제시 UTM을 확인하여 주문서에 기록하는 모듈
  • 단순 참조용 지금은 잘 안씀

주문서 모델

  • 주문 결제 흐름은 상태가 바뀌고 저장되어 있어야함.
  • 모델을 여럿 만들어서 다소 복잡함
  • 환불 상태 모델을 분리

홍보용 페이지

  • 간단히 홍보용 페이지가 필요함
  • 후반부에 단시간 내에 추가
  • django-summernote로 추가(문제가 좀 있으나 일단은 씀(이미지 태그에 a가 안먹음))
  • 초기 홍보에 잘 써먹었고 개편 예정

제품 모델

  • 이미지, 제품, 제품 설명, 재고, 재고 기록을 분리
  • 제품 설명은 제품에 리치 텍스트로 넣는게 더 나으나 일단 개발 편의성이 이쪽이 유리(개선 예정) 장바구니
  • 언제든 확인 가능하게 구성
  • 장바구니 편집 뷰를 공용으로 씀(개발 편의)
  • 무료 배송비 계산 등이 귀찮음
  • 비회원 장바구니와 회원 장바구니 연동은 쿠키와 모델로 이루어짐

주문 진행

  • 주소는 다음 주소 API를 씀
  • 주소록을 기록해 놨다가 손쉽게 읽어올 수 있게 함
  • 주소 입력시 최대한 덜 실수하게 고민함
  • django 폼은 하나만 쓰면서 진행할 수 있게 장바구니는 분리되어 구성
  • 장바구니 동기화가 약간 지저분하지만 일단은 작동하는 걸로

배포(도커)도 있습니만 일단 안썼습니다. 일단 생각나는걸 마구 적어보았습니다. 적립금 구현 이야기는 아직 개발중이라 발표할때쯤엔 정리될지도 모르겠습니다. 적립금 구현이 들어가면 테스트(모델마미) 이야기도 추가될거 같습니다.

@chiyodad
Copy link

제일 기대되는 세션이에요!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment