Python/Django

장고 걸즈 튜토리얼 따라하기 3 - 장고 model

bug_maker 2018. 12. 14. 20:53
3_django_model

객체(Object)

프로그래밍 개발 방법 중에는 객체 지향 프로그래밍(object oriented programming)이라 부르는 개념이 있다. 프로그램이 어떻게 작동해야 하는지 모든 것을 하나하나 지시하는 것 대신, 모델을 만들어 그 모델이 어떤 역할을 가지고 어떻게 행동해야 하는지 정의하여 서로 알아서 상호작용할 수 있도록 만드는 것이다.

객체 지향 설계를 할 때에 한 객체의 속성은 객체 속성(properties), 행위는 메서드(methods)로 구현된다.

블로그 글을 모델로 만들게 되면

등의 속성들을 가지게 될것이다.

그리고 글을 출판하기 위한 메서드로 publish 메서드도 만들것이다.

 

장고 모델

장고에서 모델을 저장하게 되면 그 내용에 데이터베이스에 저장된다. 데이터베이스는 데이터의 집합이며 데이터들이 모여있는 곳이다. 이곳에 사용자에 대한 정보나 블로그 글 등이 저장되어 있다.

 

어플리케이션 만들기

콘솔 창에 아래 명령어를 실행해 어플리케이션을 만든다.

그러면 blog 디렉토리가 생성되고 여러 파일이 있다.

어플리케이션을 생성한 후에 장고에 이 어플리케이션을 사용한다고 알려주기 위해서 mysite/settings.py에서 INSTALLED_APPS을 수정한다.

 

블로그 글 모델 만들기

모든 Model 객체는 blog/models.py 파일에 선언한다. blog/models.py 파일을 열어 모든 내용을 삭제하고 아래 코드를 추가한다.

from, import - 다른 파일에 있는 코드를 불러와주는 역할

class Post(models.Model) - 모델을 정의하는 코드

  • class - 객체를 정의한다는 뜻
  • Post - 모델의 이름(클래스 이름의 첫 글자는 대문자로 쓴다)
  • models - Post가 장고 모델임을 의미한다.
  • models.CharField - 글자 수가 제한된 텍스트를 정의할 때 사용
  • models.TextField - 글자 수에 제한이 없는 긴 텍스트를 위한 속성
  • models.DateTimeField - 날짜와 시간
  • models.ForeignKey - 다른 모델에 대한 링크를 의미

def publish(self)publish라는 메서드이다. def가 함수/메서드라는 뜻이고, publish가 메서드의 이름이다.

 

데이터베이스에 모델을 위한 테이블 만들기

데이터베이스에 Post 모델을 추가하기 위해 아래 명령을 입력한다.

장고는 데이터베이스에 반영할 수 있도록 마이그레이션 파일(migration file)이 있다. 아래 명령을 실행해 실제로 데이터베이스에 모델 추가를 반영한다.