Django 공식 문서 v3.0 Tutorial
https://docs.djangoproject.com/en/3.0/intro/tutorial02/
https://github.com/JisunParkRea/django-tutorial-mypractice
Database 세팅
이번 예제는 python에 내장되어있는 sqlite를 사용하기 때문에 따로 세팅이 필요 없음
Database에 tables를 만들어보자
python manage.py migrate
Models 만들기
데이터 모델을 한곳에 정의하고 이를 쉽게 사용하기 위해 쓰는 것
즉, 데이터베이스를 편리하게 사용하기 위한 목적
여기 예제에선 2개의 model를 만든다.
- Question: question & publication date
- Choice: text of the choice & a vote tally
그리고 각 Choice는 Question과 관련되어 있다.
polls/models.py에 다음 코드를 붙여넣자
import datetime
from django.db import models
from django.utils import timezone
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def __str__(self):
return self.question_text
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1)
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __str__(self):
return self.choice_text
Models 활성화
그 전에 project에게 app이 설치되었다는 것을 알려줘야함.
mysite/settings.py에서 INSTALLED_APPS에 app이름인 polls 추가
그리곤 makemigrations 명령어를 통해 Django에게 model에 변화가 있다는 것을 알려주는 것
python manage.py makemigrations polls
결과:
migrate 명령어를 통해 Database에 model table들을 만들 수 있음 (동기화)
python manage.py migrate
결과:
# 다음 명령을 통해 생성된 sql문을 확인할 수 있음
python manage.py sqlmigrate polls 0001
결과:
Admin user 만들기
python manage.py createsuperuser
서버 시작 후 Admin 페이지 접속
python manage.py runserver
Admin에서 poll app 수정 가능하게 만들기
poll app을 admin index page에 display하자
이를 위해선 admin에게 Question object가 admin interface를 가지고 있다는 것을 알려줘야 한다.
polls/admin.py에 다음 코드를 붙여넣자.
from django.contrib import admin
from .models import Question
admin.site.register(Question)
결과:
여기서 원하는대로 수정/삭제 할 수 있음