Server/Django project 1 - shopping mall

8. Django product app 상품목록(list) 만들기

개발자킹콩 2020. 9. 24. 13:58

이제 상품에 대한 app을 만져보자

 

 

 

1. model

product / models.py

 

이전에 완성한 product의 model을 보면 다음과 같다.

 

 

 

 

2. view

 

우선 product의 경우 list를 사용하기 ListView를 이용한다.

(user에서는 FormView를 사용햇다.)

 

 

여기서 이해를 돕기위해 복습하자면,

우리는 view를 만들때 하나씩 함수로 구현이 가능하다.

하지만 django에서는 기본적으로 내부적으로

간단하게 이용 가능한 몇가지의 View들이 존재하고

우리는 views.py에서 해당 class를 사용할 특정View를 상속받은 뒤,

프레임워크의 특징처럼 구조에 맞게 몇가지 설정만 하면 된다.

 

 

 

product / views.py

 

ListView의 경우 어떤 모델의 리스트를 보여줄 것인지 모델을 지정해주어야 한다.

(모델만 지정해주면 끝이다.)

 

 

 

 

3. url

 

여기서 바로 url도 지정해보자

클래스니까 as_view 함수 사용 잊지말것!

 

 

 

 

 

4. template

이제 templates도 만들어야 겠지

shopuser/templates/base.html 과 같은 내용인 product/templates/product.html을 생성한다.

 

그후 templates를 views에서 지정을 해야겠지.

그래야, url로 접근하면 views.py의 해당 클래스가 반응하고,

지정된 해당 templates로 화면에 출력해줄테니!!!!!

 

product / views.py

 

 

 

 

5. list 출력

자 연결은 됐는데 리스트가 나오지 않는다.

당연히 .html에 해당 list 출력하는 코드를 작성하지 않았으니까!!!

 

 

 

product.html
출력된 화면

 

이렇게 쿼리셋으로 묶어서 list를 보여준다.

즉, 반복문을 사용해서 이를 출력하도록 하겠다.

 

 

 

 

product가 갖고 있는 값중에서 이름과 가격을 출력하도록 하자

 

 

 

 

 

지금 views에서 모델명과 템플릿명만 지정해줬더니 object_list만 출력하면

내가 연결하고 싶은 모델의 ListView를 아주 쉽게 구현 가능하다. 

 

 

 

 

 

6. 몇가지 속성

 

여기서 몇가지 속성이 존재하는 데,

예를 들어 object_list를 사용하기 싫으면 

 

이렇게 특정이름을 templates에서 사용할 수 있도록 속성을 제공한다.

사실 여기서 기능은 끝인데 html으로 꾸며 보자

(부트스트랩 사용도 뒤에서 해볼것이다.)

 

 

 

 

 

7. humanize (형식, 툴, 필터 이용하여 수정)

 

 

이런형식의 간단한 표는 툴이기에 그냥 외우고 쓰자잉

그런데 여기서 10,000 이렇게 바꾸고 날짜도 우리가 보기 불편하니까 수정하자.

 

 

 

(수정하기)

 

humanize의 경우 적절한 필터를 사용할 수 있다.

그런데 settings.py에 해당 humanize app을 사용함을 알려야 한다.

 

이제 humanize를 load해서 사용할 수 있게 된다.

 

 

(1) intcomma : 해당 숫자를 3개마다 comma를 찍어서 금액 표시에 유용하다.

 

(2) django template builtin filters 라고 구글링 하게 되면 

공식홈페이지가 등장하고 여기서 date를 검색하면 

여러가지 키워드들이 등장한다.

이 키워드를 통해서 적절한 출력을 형성한다.

 

 

이쁘게 잘 나왔다.

 

 

 

 

 

 

 

이상!! 오늘도 감코!!