멋쟁이 사자처럼 at 한국교통대학교 7기

2019 KNUT X LIKE LION #7

데이터베이스

토픽 멋쟁이 사자처럼 at 한국교통대학교 7기 > 웹 애플리케이션 개발 > Django
데이터베이스

  • 메인 컨텐츠 기능 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

 

  • 명령어를 입력하면 다음과 같이 나타납니다.

 

 

 

 

댓글

댓글 본문
  1. fiveflow
    안 되시는 분들은 아마 파일을 저장하지 않고 실행했기 때문일 겁니다!
  2. 이민휘
    이전까지는 잘 따라 왔는데
    ModuleNotFoundError: No module named 'blogapp'
    어떻게 해야 하나요?
  3. 몽롱해
    저는 마지막에 선생님처럼 길게 나오지 않네요..ㅜ