장고는 데이터베이스 종류와 상관없이 데이터베이스 작업을 할 수 있도록 도와준다.
만약 다른 데이터베이스를 사용하고 싶다면,
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