본문 바로가기

프로젝트/파이썬 장고를 이용한 웹페이지 만들기

4. django에 MTV 적용하기

startapp으로 프로젝트 생성하기

3장에서 배웠던 MTV 패턴을 장고에 적용하는 방법은 매우 쉽다.

다음의 명령어를 터미널에 입력하면, 자동으로 프로젝트의 디렉토리 구조를 생성해 준다.

python manage.py startapp project-name

내 project-name은 app_default이기에 다음과 같이 입력했다.

python manage.py startapp app_default

앱을 생성하면 다음과 같이 MTV 패턴이 적용된 파일과 폴더가 만들어진다.

MTV 적용

이제 위 구조에서 중요한 파일들을 알아보자.


1. models.py

모델(model)은 DB의 구조를 결정한다. 장고에서는 models.py을 통해 DB의 명세를 관리한다.

모델은 클래스로 만드는데 클래스의 이름이 테이블의 이름이 되고, 클래스의 속성들이 컬럼(column)이 된다.

이 모델을 이용해 DB의 종류에 상관없이 DB를 편하게 이용할 수 있도록 ORM이라는 기능을 사용한다.

ORM Object Related Mapping으로 객체를 이용해 관계형 DB를 이용할 수 있게 해준다. 장고에서만 사용하는 것이 아닌, 다양한 웹 프레임워크에서 사용한다.

DB는 주로 생성, 검색, 수정, 삭제, 즉 CRUD(Create-Read-Update-Delete)와같은 일을 하는데, 모델을 이용하게 되면 ORM 내부에서 자동적으로 데이터베이스에 할 일을 전달하고 결과를 반환해준다. 따라서 프로그래머는 특정 DB에서 사용되는 SQL 문이나 API 사용법을 몰라도 웹 어플리케이션을 작성할 수 있다.


2. admin.py

모델을 만들고 CRUD 페이지를 만들면 모델이 제대로 만들어졌는지 확인이 필요하다. 그렇다면, 장고의 기본 관리자 페이지를 사용해서 확인할 수 있다.

이 때 자신이 만든 모델을 관리자 페이지에서 확인하거나 특별한 기능을 추가하고 싶다면 admin.py에 해당 내용을 써주면 된다.


3. views.py

게시판을 만들 때, 제일 기본적인 기능은 아까 말한 CRUD 기능이다. CRUD를 기반으로 글 쓰기, 글 보기, 글 수정, 글 삭제 등의 페이지들이 필요할 것이다. 이 페이지를 하나하나 만들 때 views.py를 사용한다.

이 뷰는 클래스형(Class Based) 뷰와 함수형(Function Based) 뷰 두 가지가 있다.


4. urls.py

views.py에 어떤 기능을 만들면 해당 기능을 동작시키는 방식은 url을 통한 호출 방식이 주가 된다. 이 때, 각 view와 url을 연결시켜 주는게 urls.py다.

즉, '어떤 url을 이용해 어떤 view를 동작시킬까'를 결정해 주는 것이 urls.py라고 보면 된다.


5. templates

보통은 HTML이 들어있는 파일이다. 확장자는 html이 대부분이지만 내부엔 html이 아닌 템플릿 코드도 많다.

템플릿 파일들 앱 폴더 안에는 temples 폴더에 위치시키지만, 프로젝트 루트에도 위치시킬 수 있다. 특정 폴더 안에 템플릿 파일들을 모아두고 싶다면 파일의 위치를 settings.py에 설정하면 된다.

 

 

 

 

이렇게 장고에 MTV 패턴을 적용하는 방법과 각 주요 파일들에 대해 알아봤다.

다음은 관리자 계정을 생성하고 확인해보는 실습을 설명하겠다.