Django(3) : DataBase 설정하기 및 admin페이지 생성

Django에서는 데이터베이스를 어떤 것을 사용해도 괜찮지만 SQLite3를 디폴트 값으로 사용하고 있습니다. 또한 Django에서는 모든 프로젝트 개발에서 유저와 유저그룹테이블을 기본적으로 만들어주기 때문에 데이터베이스가 필요없는 웹프로젝트를 만들더라도 변경사항을 반영해줘야 합니다. 우선 아래의 명령어를 실행해서 유저 관련 데이터베이스를 변경사항에 반영해줍니다. 명령어를 실행하게 되면 프로젝트 폴더 안에 db.sqlite3파일이 생성됩니다.

$ python manage.py migrate

유저를 제외한 항목을 데이터베이스에 추가해보겠습니다. 우선 프로젝트의 setting.py에 접근하여 INSTALLED_APPS에 현재 앱이름을 적어줍니다.

INSTALLED_APPS = [
‘django.contrib.admin’,
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.messages’,
‘django.contrib.staticfiles’,
‘App_name’
]

또한 시간대가 기본적으로 세계표준시로 정해져 있는데 한국시간으로 바꾸고 싶다면 TIME_ZONE 에 UTC를 Asia/Seoul로 변경해줍니다.

데이터베이스의 테이블은 app폴더 안의 models.py에 설정을 하면 됩니다. id(Primary key)의 경우 자동으로 생성해주므로 따로 쓰지 않으셔도 됩니다. 이때 클래스 1개는 Table 1개라고 생각하시면 됩니다.

from django.db import models
# Create your models here.
class saying(models.Model):
saying_text = models.CharField(max_length=500)
source_text = models.CharField(max_length=200)
pub_date = models.DateTimeField(‘date published

데이터베이스에 변경이 필요한 사항을 추출하고 반영하기 위해 아래의 명령어를 사용합니다.

$ python manage.py makemigrations
$ python manage.py migrate

이 때 model에 정의한 테이블을 SQL문장으로 보고 싶다면 아래와 같은 명령어를 사용하면 됩니다.

$ python manage.py sqlmigrate App_name 0001

다음은 admin을 설정하도록 하겠습니다. superuser를 생성하기 위해 아래의 명령어를 실행하고 username, email, password를 입력해줍니다.

$ python manage.py createsuperuser

확인을 위해 아래의 명령어를 입력하고 http://127.0.0.1:8000/admin/에 들어갑니다.


$
python manage.py runserver

아래 사진과 같은 페이지가 나오면 아까 등록한 것을 입력하여 로그인 해줍니다. 그러면 기본적으로 등록이 되는 user와 group에 관한 데이터베이스 테이블이 보입니다.

아까 설정해둔 데이터베이스를 admin페이지에서도 뜨게 만들도록 하겠습니다. app폴더에 있는 admin.py에 들어가서 app안의 models.py에 있는 테이블을 import 시키고 그 테이블을 register시킵니다.

from django.contrib import admin
from main.models import Saying
admin.site.register(Saying)

그 후 새로고침을 하게 되면 수정된 것을 볼 수 있습니다.

admin페이지에서 데이터베이스를 볼 때 원하는 항목으로 나오게 하고 싶다면 models.py파일의 원하는 class(table)에 아래의 함수를 넣어줍니다.

def __str__(self):
return self.saying_text
Show your support

Clapping shows how much you appreciated Myeong Ho Song’s story.