관리 메뉴

Storage Gonie

Django (13) 앱의 구성요소 Models, Urls, Views 본문

웹개발/인스타 클론 (1) Django

Django (13) 앱의 구성요소 Models, Urls, Views

Storage Gonie 2019. 6. 22. 11:55
반응형

장고의 앱

- 장고에서 앱이 의미하는 바는, 매우 특정한 기능을 가진 장고 프로젝트의 기능 중 작은 부분이다.

장고 앱의 구성요소

@ Models
@ Urls
@ Views
* urls에는 장고의 urls, 앱의 urls두가지 종류가 존재하며, 
   장고의 urls는 단 1개만 존재하는 반면, 앱의 urls는 여러개가 존재한다.
   장고의 urls는 전체 어플리케이션의 urls를 import하며, 앱의 urls는 url과 view function을 매칭시킨다는 차이점이 존재한다.

Models

- 모델은 DB에 저장할 데이터의 모습 및 형태라고 할 수 있다.
- 무엇이든 DB에 저장을 해야하는 것은 모델이 필요하다.
- 모델에 포함된 것들은 테이블의 필드라고 보면 된다.
ex) 쇼핑몰

@ Products app

1. Product 모델
- 상품ID
- 설명
- 가격
- 사진

 

2. Review 모델

- 후기ID
- 상품ID
- 후기를 남긴 유저의 ID
- 후기 텍스트
- 평점


@ Users app

1. User 모델
- 사용자 ID
- 이메일
- 풀네임
- 신용카드정보
- 배송지정보

@ Cart app
1. Cart 모델
- Product들의 리스트(카트에 추가된)
- 사용자 ID(누가 생성한 장바구니인가)

- 적용된 Coupon

2. Coupon 모델
- 쿠폰번호
- 유효기간
- 사용된 횟수

 

@ Payment app
1. Payment 모델

- 결제ID(누군가 환불을 원할 때 찾을 수 있도록)
- 정상적으로 결제가 되었는가
- 어느 장바구니에서 사용되었는지
- 세금이랑 수수료 빼고 얼마를 우리가 벌었는지

 

Urls

- 여기서 말하는 것은 장고의 urls를 의미하고, 장고의 url dispatcher는 빌딩에서 초인종을 누르는 것과 같다.
- 장고의 urls는 config/에 존재하며 단 1개만 존재한다. 이는 다른 모든 앱들의 urls를 불러온다.
- 장고로 하여금 뭔가를 실행하게 한다. ex) view 실행
- 일종의 프로토콜
- HTTP request를 보내는 것과 같다.


예를 들면, 우리는 아래와 같이 url을 만들 수 있고, 이를 장고에 보내어 특정 행위를 요청할 수 있다.

1. 홈페이지를 보기위한 url

   http://nomadstore.com/


2. 로그인을 요청하는 url

   http://nomadstore.com/login

3. 카테고리를 요청하는 url
   http://nomadstore.com/categories/pillows

Views

장고에 url을 요청했는데 이게 url 파일에 존재한다면 어떻게 될까?(존재하지 않으면 작업종료)
- 장고는 view를 실행하고, view는 장고에게 무엇을 해야할지 알려준다. 그런뒤 view는 반환받은 결과를 다시 돌려준다.
- 로그인 url를 요청했을 때를 보면, 장고는 view를 실행하고 view는 장고로 하여금 로그인 작업을 수행하라고 한다.
- view는 url에 의해서 작동이 되는 python 함수일 뿐이다.(url이 트리거 역할)

예시) E-commerce Views
장고는 아래와 같이 누군가 해당 주소로 이동하면, 해당 function을 실행하게 되어 있다.

http://nomadstore.com/           -> def showHomePage()
http://nomadstore.com/login   -> def checkUser()
http://nomadstore.com/categories/pillows   -> def showCategory()

아래의 6가지 액션은 Django view가 하는 일이며, 이는 url콜에 의해 작동하게 된다.
1. Hey, Django!
2. 최신 상품 25개를 가져와
3. 세일중인 상품 10개를 가져와
4. 카테고리의 이름을 가져와
5. 2,3,4를 오브젝트에 넣고
6. 사용자에게 그 오브젝트를 전송해 

정리

반응형
Comments