장고는 데이터베이스 종류와 상관없이 데이터베이스 작업을 할 수 있도록 도와준다.
만약 다른 데이터베이스를 사용하고 싶다면,
mysite/setting.py
파일에 들어가 데이터베이스 세팅내용을 수정해주면 된다.
기본적으로는 SQLite
를 사용하도록 구성되어 있다.
- mysite/setting.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
apps
확인하기또한 mysite/setting.py
에는 현재 장고프로젝트에서 활성화 되어 있는 앱들의 이름이 저장되어있다.
기본적으로 INSTALLED_APPS
은 Django
와 함께 따라오는 다음 앱들을 포함한다.
django.cotrib.admin
: 관리용 사이트django.contrib.auth
: 인증 시스템django.contrib.contenttypes
: 컨텐츠 타입을 위한 프레임워크django.contrib.sessions
: 세션 프레임워크django.contrib.messages
: 메세징 프레임 워크다음 기본 앱들 중 몇가지는 최소 하나 이상의 데이터베이스 테이블을 사용하기 때문에
미리 데이터베이스 테이블을 만들어줘야한다.
데이터베이스 테이블을 만들기 위한 다음 명령을 실행한다.
(venv)
python manage.py migrate
✔ 모델 : 부가적인 메타데이터를 가진 데이터베이스의 구조(layout)
을 말한다.
지금 만들고자 하는 설문조사(poll)
앱에서도 다음 두가지 모델에 대한 데이터 저장을 필요로 한다.
Question
: 질문Choice
: 사용자가 질문에 대한 선택할 수 있는 리스트들이때 질문(Question
)에 대한 데이터는 질문과 발행일을 갖게되고,
선택지(Choice
)에 대한 데이터는 선택지와 표계산을 갖게된다.
따라서 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)
코드를 해석해보자면,
Question
, Choice
두가지의 데이터베이스 모델을 가진다.Question
모델은 질문과 발행일의 데이터 타입을 가지며,CharField
는 문자타입을 datetime
은 시간타입을 나타낸다.Choice
모델은 선택지와 표에 대한 타입을 가지며,Choice
모델에서의 질문은 Foreignkey
를 통해 Question
모델의 질문을 가리킨다.우선 현재로써는 이정도로 해석해볼 수 있을 거같다...ㅜ
앱(apps)
별로 기능이 나눠져 있는데,
이 앱을 등록을 하느냐 안하느냐에 따라서 앱을 사용하겠다 사용하지 않겠다를 명시해줄 수 있다.
즉 장고에서의 앱은 "꼈다뺐다"가 가능한 것이다.
따라서 만들어준 설문조사(poll)
앱을 사용하기 위해서는 등록해주어야한다.
- mysite/setting.py
INSTALLED_APPS = [
'polls.apps.PollsConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
6:10