1) mysite/settings.py
에 대한 설명
INSTALLED_APPS
에서 기본 설치된 app 확인할 수 있음.
- django.contrib.admin : 어드민 사이트
- django.contrib.auth : 인증 시스템
- django.contrib.contenttypes : 컨텐츠 타입 프레임워크
- django.contrib.sessions : 세션 프레임워크
- django.contrib.messages : 메시징 프레임워크
- django.contrib.staticfiles : static files 관리 프레임워크
$ python manage.py migrate
Django에서 Model은 데이타 서비스를 제공하는 Layer입니다. Django의 Model은 각 Django App안에 기본적으로 생성되는 models.py 모듈 안에 정의하게 됩니다. models.py 모듈 안에 하나 이상의 모델 클래스를 정의할 수 있으며, 하나의 모델 클래스는 데이타베이스에서 하나의 테이블에 해당됩니다.
- 모델이란 데이터베이스에 저장될 데이터를 클래스 형태로 구성
- 객체는 데이터베이스가 저장하는 단위와 유사 (행을 추가하는 개념. 한 행이 객체라고 보면 됨
- 데이터와 함께 동작을 함께 정의 (저장, 읽기, 수정, 삭제 : CRUD)
- 왜 클래스로 정의하는가? => 함수로 구성되면 모든 동작을 직접 구현해야 되나, 클래스는 상속기능을 이용해 필요한 부분만 구현하면 되기 때문임)
polls app에서는 2개의 모델 Question
과 Choice
을 만들게 되는데, 각가 아래와 같은 데이터를 가지게 된다.
polls/models.py
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
위와 같이 모델을 설정해 주면, 장고는 아래와 같은 작업을 합니다.
모델을 만든 뒤 해야 되는 첫 번째 작업은 polls란 앱이 설치되었다는 것을 우리 프로젝트에 알려줘야 합니다. 이를 위해 우리는 settings.py에 관련 내용을 아래와 같이 추가해야 합니다.
1) Setting.py에 앱 추가 (만약, 아직까지 안 했다면)
mysite/settings.py
INSTALLED_APPS = [
'polls.apps.PollsConfig', # <-- 이 부분을 추가
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
2) Migration
Makemigration
makemigration
명령어를 통해 변경사항을 migration
으로 저장합니다. 0001_initial.py
파일이 생긴 것을 볼 수 있습니다.$ python manage.py makemigrations polls
위의 명령어를 입력하고 나면, 다음과 같은 메시지가 뜨게 됩니다.
Migrations for 'polls':
polls/migrations/0001_initial.py
- Create model Question
- Create model Choice
Migrate
$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, polls, sessions
Running migrations:
Rendering model states... DONE
Applying polls.0001_initial... OK
Python shell은 아래 명령어로 실행할 수 있습니다. shell에서 나올 때는 exit()를 해 주면 됩니다.
$ python manage.py shell
이 부분은 생략하니, 자세한 내용은 튜토리얼을 참고하시기 바랍니다.
장고에서는 어드민 기본 기능을 제공한다.
1) Admin User 생성
$ python manage.py createsuperuser
2) Development Server 시작하기
$ python manage.py runserver
3) 어드민에서 관리할 모델 정의
어드민에서 관리할 모델은 polls/admin.py에 명시적으로 등록해야 합니다. 등록된 이후에는 어드민에서 Poll과 Choice들에 데이터를 입력/수정/삭제/조회를 할 수 있습니다.
from django.contrib import admin
from polls.models import *
admin.site.register(Question)
admin.site.register(Choice)