일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 도커 컴포즈
- 플라스크
- cpp
- 파이썬 장고
- 프로그래밍
- 개발자취업
- 기초강의
- flask
- 도커
- 예제프로젝트
- c
- mlops
- 장고 기초 강의
- 개발자
- 파이썬
- docker
- c++
- 인공지능
- 웹개발
- 쇼핑몰예제
- 개발언어
- ADP
- 장고
- 장고 튜토리얼
- Python
- Django
- 파이썬강의
- C언어
- 에어플로우 기초강의
- airflow
- Today
- Total
TITEDIOS 편한 코딩
[Django] DB와 관리자 페이지 - 투표 앱 만들기(Django tutorial) 본문
목차
- 데이터베이스 셋업
- 모델 생성하기
- 모델 활성화 하기
- Django의 Admin 맛보기
4.1. 관리자 계정 생성
4.2. 관리자 페이지 접근
4.3. Polls app 등록하기
4.4. Polls app 모델 확인 - 결론
이전에 이어서 DB에 대한 설정을 하는 것과 관리자 페이지를 이용해 모델이라는 것을 생성, 수정, 확인 등을 하는 작업에 대해 알아보도록 하겠습니다.
1. 데이터베이스 셋업
기본적으로 Django는 SQLite를 기본 Database로 사용합니다. 여러분이 DB에 처음이시거나 익숙하지 않으시다면 SQLite는 DB를 익히시기에 좋은 선택지 중 하나가 될 수 있습니다. SQLite를 Django에서 사용하기 위해 별다른 노력을 기울이지 않아도 되기 때문입니다.
이제 mysite/settings.py
파일을 열어보겠습니다. 상단에 INSTALLED_APPS 가 보일 것입니다. INSTALLED_APPS에 작성된 내용은 Django가 실행될 때 함께 실행한 모듈들이라고 생각하시면 됩니다.
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
]
INSTALLED_APPS 와 관련한 내용을 간단하게 살펴보겠습니다.
- django.contrib.admin: 관리자 페이지
- django.contrib.auth: 인증 관련 시스템
- django.contrib.contenttypes: content type을 위한 프레임워크
- django.contrib.sessions: Session 프레임워크
- django.contrib.messages: 메시징 프레임워크
- django.contrib.staticfiles: static file 관리를 위한 프레임워크
INSTALLED_APPS 로 실행할 모듈들 중에 DB를 사용해야 하는 경우가 있습니다. 예를 들면, 관리자 페이지라든가, 인증 관련 시스템 등 DB에 뭔가 기록해야 하는 경우가 발생합니다. 이럴때 아래의 명령을 이용합니다.
python manage.py migrate
migrate
명령을 수행하면 INSTALLED_APPS을 살펴보고 DB 테이블 생성, 갱신 등 필요한 작업이 있는 경우 해당 작업을 수행합니다. 많은 설명을 한 것 같지만 사실 모든게 migrate
명령을 설명하기 위해서 하는 말들인 것 같네요.
2. 모델 생성하기
이제 우리의 모델을 만들어 봅시다. 추가적인 metadata를 통해 DB의 layout이 필요합니다.
우리가 만들 모델은 Question과 Choice 모델입니다.
- Question: question과 publication date를 필드로 가지고 있습니다.
- Choice: choice와 vote 총합을 필드로 가지고 있습니다. 각 Choice는 Question과 관계가 있습니다.
그럼 모델을 작성해보겠습니다. 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)
코드 설명입니다.
1) Question 클래스: 질문 내용을 저장하는 모델입니다.
- question_text: 질문 텍스트를 저장하는 필드입니다. 최대 200자까지 가능합니다.
- pub_date: 질문이 게시된 날짜와 시간을 저장하는 필드입니다.
2) Choice 클래스: 특정 질문에 대한 선택지를 저장하는 모델입니다.
- question: Question 모델과 연결된 외래 키(Foreign Key)로, 각 선택지가 어떤 질문에 속하는지 나타냅니다. 질문이 삭제되면 그와 연결된 선택지도 삭제됩니다(on_delete=models.CASCADE).
- choice_text: 선택지 텍스트를 저장하는 필드입니다.
- votes: 선택지가 받은 투표 수를 저장하는 필드입니다. 기본값은 0입니다.
3. 모델 활성화 하기
몇 줄 안되는 코드는 Django가 많은 일을 하게 합니다. 우리가 작성한 모델 파일을 보고 Django는 아래와 같은 일을 합니다.
- Polls 앱의 DB 스키마를 만듭니다. 즉, 테이블을 생성합니다.
- 우리가 만든 모델인 Question과 Choice 객체에 접근할 수 있도록 Python API를 만들어 줍니다.
다만, 이렇게 하기 위해서는 mysite/settings.py
파일에서 몇 가지를 바꿔줘야 합니다.
INSTALLED_APPS = [
"polls.apps.PollsConfig", # 우리 app을 추가
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.messages",
"django.contrib.staticfiles",
]
그리고 아래 명령어를 수행합니다.
python manage.py makemigrations polls
처음 보는 명령입니다. makemigrations
명령어는 migrate
명령어와 유사한 기능을 합니다. 다만, 특정한 앱, 지금은 polls 앱에 대한 변경사항만 확인하는 명령입니다. 명령을 수행하면 아래와 같은 화면을 확인할 수 있습니다.
이후에 migrate
명령을 수행하여 DB 변경사항을 DB에 적용할 수 있습니다.
4. Django의 Admin 맛보기
우리가 만든 모델은 관리자 페이지에서 확인이 가능합니다. Django 는 관리자 페이지를 제공하므로 이를 확인해 보겠습니다.
4.1. 관리자 계정 생성
관리자 계정 생성 역시 manage.py
의 명령어를 통해 만듭니다.
python manage.py createsuperuser
위 명령어를 실행하면 아래와 같은 화면을 볼 수 있습니다. (저는 아이디와 비밀번호를 admin/admin으로 해서 비밀번호가 너무 쉽다는 경고가 발생했지만, 여러분은 비밀번호를 어렵게 하신다면 경고는 보실 수 없으십니다).
4.2. 관리자 페이지 접근
개발 서버를 실행시키고 관리자 페이지에 접근해 봅시다. 아래 명령어를 수행하고 로그인 창이 나오면 위에서 만들었던 관리자 계정을 입력합니다.
python manage.py runserver
접속하면 아래의 화면을 보실 수 있으실 것입니다.
4.3. Polls app 등록하기
그런데 이상하죠. 저희가 만든 Polls 앱이 보이지 않습니다. 관리자 페이지에서 Polls App을 보이게 하려면 admin에 등록을 하는 과정을 거쳐야 합니다. polls/admin.py
파일을 수정해 봅시다.
from django.contrib import admin
from .models import Question
admin.site.register(Question)
파일을 수정하고 새로고침(F5)을 하면 자동으로 반영됩니다. 개발 서버를 실행하고 있으면 변경사항이 자동 반영되기 때문입니다.
이제야 우리가 원하는 모습이 보이는군요.
4.4. Polls app 모델 확인
마지막으로 신규로 투표할 질문과 답을 작성해 보겠습니다. Quistion 오른편에 +Add 버튼을 누르고 아래와 같이 입력합니다. 다만, 질문은 여러분 마음대로 해도 괜찮습니다.
질문을 입력하고 Save 버튼을 클릭하면 아래와 같이 질문이 생성됩니다.
결론
이번 포스팅에서는 Django에서 DB를 다루는 방법에 대해 간략히 살펴보았습니다. 우리의 모델(Question, Choice)을 만들고 모델을 통해 DB 테이블을 생성하였습니다. 또한 관리자 페이지에서 이 모델들을 확인하거나 추가로 객체를 생성하는 방법을 알아보았습니다. 여러분이 Django로 무엇을 하든 오늘 실습했던 DB와 관리자페이지는 거의 필수적일 것입니다. 조금 더 성장한 여러분에게 박수를 드립니다.
도움이 되셨다면 공감 부탁드리겠습니다. 여러분의 공감이 정말 큰 힘이 됩니다.
감사합니다!
'Django' 카테고리의 다른 글
[Django] 템플릿(template) 시스템 - 투표 앱 만들기(Django tutorial) (1) | 2024.11.12 |
---|---|
[Django] 뷰(View) 시작하기 - 투표 앱 만들기(Django tutorial) (4) | 2024.11.01 |
[Django] 시작하기 - 투표 앱 만들기(Django tutorial) (0) | 2024.10.25 |
[Django] 프로젝트 구조 - 장고 기본 요소들에 대한 이해 (1) | 2024.09.13 |
[Django] MTV 패턴 - Django 아키텍처 및 구조 (1) | 2024.09.12 |