코깽이의 코딩일기

Django - 첫 번째 장고 앱 작성하기, part 2-1 본문

Django/Django - 튜토리얼

Django - 첫 번째 장고 앱 작성하기, part 2-1

코깽이 2023. 8. 2. 12:59
반응형

공식문서

https://docs.djangoproject.com/ko/4.2/intro/tutorial02/

 

Django

The web framework for perfectionists with deadlines.

docs.djangoproject.com

 


1. 데이터 베이스 설치

Part2에서는 데이터 베이스 설치부분부터 시작하게 됩니다. 저는 튜토리얼을 간단하게 실습하면서 공부할 예정이라 별도로 설치할 필요가 없는 SQLite를 사용합니다. 이외의 DB를 사용하시는 분들은 공식문서를 참고해주세요.

 

DB설정하는 부분에서 시간대를 맞춰주라는 글이 있으니 저도 TIME_ZONE은 설정하겠습니다.

시작 프로젝트 mysite의 settings.py에 들어가서 LANGUAGE_CODE와 TIME_ZONE 부분을 수정해주었습니다.

LANGUAGE_CODE = 'ko-kr'

TIME_ZONE = 'Asia/Seoul'

 

수정을 완료한 후에 기본적으로 어떤 앱들이 있는지 확인이 가능합니다.

코드상으로는 mysite/settings.py 코드를 확인하시면 보실수 있습니다.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

 

간단한 명령어를 이용해서 테이블의 초기값들을 생성해주어야합니다. 저는 part1부분에서 붉은색 오류 메세지가 보기 싫어서 미리 진행하였는데 혹시나 명령어를 실행하지 않았을 경우 아래의 명령어를 실행해줍니다.

 

# 마이그레이션 적용
$ python manage.py migrate

2. 모델 만들기

모델 만들기 실습을 진행하기전에 간단하게 알아두고 진행하면 좋을 Django에 대한 정보를 살펴보고 진행하겠습니다.

 


Django에서 model이란?

    - Django에서 model은 데이터에 대해서 정의를 가지고 있는 클래스이고 하나의 모델 클래스는 하나의 테이블에 매핑이 됩니다. 기본적으로 Django는 MVT패턴을 가지고 있고 ORM기법을 이용합니다.

    

MVT (Model, View, Template)란?'

    - 웹 프로그래밍시 일반적으로 사용되는 MVC 개념과 동일하고 용어만 다르게 부르는 것입니다. 서로 분리하여 각자의 요소가 서로에게 영향을 주지 않는 구조입니다.

    - Model은 데이터 베이스에 저장되는 데이터

    - View는 프로그램 로직이 동작하고 데이터를 처리

    - Template는 사용자에게 보여지는 UI

 

ORM (Object-Relational Mapping)란?

    - 객체와 관계형 데이터베이스를 의미합니다.

    - 기존에 DB에 접근하기위해서는 SQL언어를 사용해서 접근을 해야했습니다. 하지만 ORM에서는 객체(클래스)를 이용하여 접근합니다. 어떠한 작업을 수행하면 ORM이 자동으로 적절한 SQL구문이나 데이터베이스 API를 호출하여 처리하기 때문입니다.


설문조사 앱에서는 Question과 Choice 2개의 모델을 사용합니다. 각각 2개의 필드도 보유해야한다고 나와있습니다.

polls앱의 models.py를 수정해보도록 하겠습니다.

처음 Django를 해보시는 분들은 꼭 한번쯤은 직접 타이핑을 다 해보시면 좋을것같습니다.

위 코드에 대해서 간단한 설명이 이어집니다.


3. 모델의 활성화

우리가 작성한 간단한 코드가 아래와 같은 일을 한다고 적혀있습니다.

우리 대신 ORM방식으로 SQL문을 작성해서 데이터베이스 스키마도 만들어준다고 나와있습니다.

 

위와 같은 일을 할려면 polls가 존재한다는 것을 알려주라고 하네요.

INSTALLED_APPS = [
    'polls.apps.PollsConfig',
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
]

대소문자 구분 잘 해주시고 마지막에 ,도 잊지마세요. 저는 처음에 실습 진행하면서 , 까먹은거 때문에 고생 많이했었습니다....

 

settings.py에 polls 앱이 새로 추가된것까지 알려주었으니 이제 polls 앱의 모델을 makemigrations 해보겠습니다.

# polls앱 마이그레이션 생성
$ python manage.py makemigrations polls

새로 vscode를 실행하시고 진행하시면 가상환경 다시 켜주시고

큼큼.... default라고 적어야하는데 defalut라고 오타가 있엇네요 ㅎㅎㅎ.....

오타 수정후에 다시 명령어를 실행하니 model들을 생성했다고 나오네요.

 

아래 명령어를 통해서 눈에 보이지 않는 sql을 확인할 수 있습니다.

# polls앱에 적용된 0001의 sql문 확인
$ python manage.py sqlmigrate polls 0001

이어서 모델의 테이블을 생성하도록 하겠습니다.

아래의 명령어를 수행해주시고 결과를 확인해보겠습니다.

# 마이그레이션 적용
$ python manage.py migrate

모델 만들고 활성화까지 진행했습니다.

실습해본 3가지 과정을 꼭 기억해주세요.


 

반응형