데이터베이스
- 메인 컨텐츠 기능 3가지 중 첫번째로 글쓰기 항목을 구성한다는 것은 무엇을 의미할까요?
- 지금까지 한 작업들만 본다면 블로그의 형태는 사용자들에게 항목을 보여주는 기능 밖에 없습니다.
굳이 장고를 사용하지 않고, html과 css, 부트스트랩 등만 사용해도 블로그를 만들 수 있는 것입니다.
하지만, 글쓰기 항목부터는 다릅니다.
블로그에 들어와서 글을 쓰게 되면, 그 내용들이 서버에 저장되어야 하며, 그 저장된 데이터들이 다시 블로그안에서 보여줄 수 있도록 해야 합니다.
- 앞으로 우리는 어떠한 데이터들을 서버에 저장하기 위해 데이터베이스를 다루게 될 것입니다.
위의 그림에서 보듯이 장고는 기본적으로 설치가 되면 [sqlite3]라는 데이터베이스가 지원됩니다.
이 외에도 MySQL, PostgreSQL 등의 데이터베이스도 지원합니다만 우리는 [sqlite3] 데이터베이스를 이용할 것입니다.
- 대부분의 데이터베이스에 접근하기 위해서는 SQL(Structured Query Language)이라는 구문을 통해 접근하게 되며, 이를 통해 데이터를 생성하거나 조작 등의 작업을 하게 됩니다.
참고)
데이터베이스란? https://ko.wikipedia.org/wiki/데이터베이스
SQL이란? https://ko.wikipedia.org/wiki/SQL
- 이와 같이 데이터베이스를 다루기 위해서는 데이터베이스에 대한 지식, SQL 구문 문법 등을 알아야 하지만 데이터베이스에 대한 지식이나 SQL 구문 문법 등을 반드시 알아야만 장고 프로젝트를 진행할 수 있는 것은 아닙니다.
- 장고에서는 데이터베이스, SQL 등에 대한 지식이 거의 없어도 직관적으로 이해할 수 있게 지원하기 때문에 관련 지식이 필요하게 되면 그 때 설명하도록 하겠습니다.
models.py
- 데이터베이스는 이전에 공부하였던 MTV 패턴에서 M(Model)에 해당하기 때문에 [models.py] 파일을 엽니다.
- [models.py]에서 데이터베이스를 설계할 수 있습니다.
- 데이터베이스에서 모델을 import하고 밑에는 모델을 생성할 수 있게 되어 있습니다.
글쓰기
- 이제부터 본격적으로 메인 컨텐츠 [글쓰기] 항목의 모델을 설계해봅시다.
- 기본적으로 글을 쓰는 데에 있어 필요한 항목은 '제목', '날짜', '내용'입니다.
기타 다른 항목들도 필요하다고 생각하실 거라 생각합니다.
하지만 진행하면서 필요한 상황에서 모델에 추가하도록 하겠습니다.
- 먼저 다음과 같이 작성합니다.
class Blog(models.Model): title pub_date body
- 모델은 클래스 단위로 생성합니다.
저는 클래스의 이름을 [Blog]로 지었습니다.
그리고 import 된 models.Model을 매개변수로 받고, 클래스 안에는 제목('title'), 날짜('pub_date'), 내용('body')로 구성하였습니다.
- 제목, 날짜, 내용을 다음처럼 완성시킵니다.
class Blog(models.Model): title = models.CharField(max_length=100) pub_date = models.DateTimeField() body = models.TextField()
- 제목은 CharField.
이름에서 쉽게 알 수 있듯이 문자로 구성되어 있는 항목이라는 것을 알 수 있습니다.
max_length는 최대 글자수를 지정합니다. - 날짜, 내용도 마찬가지로 이름에서 기능을 알 수 있습니다.
이처럼 장고는 데이터베이스를 자세히 알지 않아도 직관적으로 모델을 설계할 수 있도록 제공하고 있습니다.
이 외에도 다양한 타입의 항목을 제공하고 있습니다.
모델 데이터베이스 적용
- 지금까지 간단히 모델을 설계해보았습니다.
- 이제 이 모델을 데이터베이스에 적용시켜주어야 합니다.
- 적용시키기 위해서 터미널에서 다음의 명령어 2개를 사용합니다.
python manage.py makemigrations python manage.py migrate
- 명령어를 입력하면 다음과 같이 나타납니다.