장고 서비스를 수행하기 위해서는 연동하고자 하는 DB(Mysql)에 장고에서 필요로 하는 테이블들이 생성되어야 합니다.
장고는 정말 편리하게도 base.py(settings.py) 에서 정의된 앱 목록(INSTALLED_APPS)을 보고 자동으로 연동할 database 에 앱 실행에 필요로 하는 테이블들을 만들어 줍니다.
python manage.py migrate
위 명령을 수행하면 아래와 같이 mysql db 에 테이블들이 자동으로 생성됩니다.
(pollsEnv) C:\pydev\venv\polls>python manage.py migrate Operations to perform: Apply all migrations: admin, auth, contenttypes, polls, sessions Running migrations: Applying contenttypes.0001_initial... OK Applying auth.0001_initial... OK Applying admin.0001_initial... OK Applying admin.0002_logentry_remove_auto_add... OK Applying admin.0003_logentry_add_action_flag_choices... OK Applying contenttypes.0002_remove_content_type_name... OK Applying auth.0002_alter_permission_name_max_length... OK Applying auth.0003_alter_user_email_max_length... OK Applying auth.0004_alter_user_username_opts... OK Applying auth.0005_alter_user_last_login_null... OK Applying auth.0006_require_contenttypes_0002... OK Applying auth.0007_alter_validators_add_error_messages... OK Applying auth.0008_alter_user_username_max_length... OK Applying auth.0009_alter_user_last_name_max_length... OK Applying auth.0010_alter_group_name_max_length... OK Applying auth.0011_update_proxy_permissions... OK Applying auth.0012_alter_user_first_name_max_length... OK Applying polls.0001_initial... OK Applying sessions.0001_initial... OK
Django 모델 만들기 (models.py)
polls/models.py 에 Qustion, Choice 클래스를 생성합니다.
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)
INSTALLED_APPS에 정의된 django.contrib.**** 앱 서비스와 관련된 테이블들이 만들어졌기에 가능합니다.
아래 명령을 수행하면 장고 admin(super 계정) 을 만들 수 있습니다.
python manage.py createsuperuser
amin user 에 비밀번호는 admin123으로 유저를 생성했습니다.
(pollsEnv) C:\pydev\venv\polls>python manage.py createsuperuser 사용자 이름 (leave blank to use 'tester'): admin 이메일 주소: admin@example.com Password: Password (again): 비밀번호가 사용자 이름와 너무 유사합니다. 비밀번호가 너무 일상적인 단어입니다. Bypass password validation and create user anyway? [y/N]: y Superuser created successfully.
Django admin 화면 접속
http://127.0.0.1:8000/admin 으로 접속을 해보겠습니다.
앞서 생성한 user와 비밀 번호를 입력하면 그럴듯한 화면이 나타납니다.
별다른 코드 작성을 하지 않았는데 Django에서는 기본으로 admin 앱을 제공해주고 있습니다.
Django adminpoll app 추가 하기
장고 어드민에 접속 했지만 poll app 관련 메뉴는 보이지 않습니다.
이번에는 polls 앱을 장고 어드민 화면에 추가 하는 작업을 진행하겠습니다.
polls/admin.py 파일에 polls 앱을 추가합니다.
from django.contrib import admin
from .models import Question
admin.site.register(Question)
#파이썬 개발 디렉토리 생성
mkdir pydev
cd pydev
#가상환경 디렉토리 생성 및 이동
mkdir venv
cd venv
#가상환경 생성
python -m venv pollsEnv
#가상환경 진입
#윈도우
pollsEnv\Scripts\activate
#리눅스
pollsEnv\bin\activate
#파이썬 팩키지 관리자 pip 업그레이드
python -m pip install --upgrade pip
#Django 설치
pip install Django==4.0.4
STS 란 Spring Tool Suit 약어 이며 , Spring FrameWork 을 지원하기 위해 최적화 된 IDE 개발 툴입니다. 기존에 이클립스(Eclipse) 기반 환경에서 웹서비스를 개발 하기 위해서는 개발에 필요한 여러가지 필수 플러그인을 별도로 설치해야 했습니다. STS 는 Eclipse 환경에서는 기본 설치 되지 않은 내장 톰켓 서버나 , 빌드툴( gradle,maven) ,git 등이 기본으로 플러그인에 포함되어있어 보다 쉽고 간편하게 웹서비스를 개발 할수 있도록 도와주는 고마운 툴입니다.
STS 다운로드
필자는 우분투 환경이라 리눅스 버전을 다운로드 받아 설치 하는 방법에 대해 소개 하겠습니다.
spring.io 사이트에서 리눅스 버전을 다운로드 받습니다.
다운로드 받은 파일을 압축 해제 합니다.
tar xvzf spring-tool-suite-4-4.14.0.RELEASE-e4.23.0-linux.gtk.x86_64.tar.gz
dev@ubuntu2004:~/STS/sts-4.14.0.RELEASE$ ll 합계 1328 drwxr-xr-x 9 dev dev 4096 3월 14 01:20 ./ drwxrwxr-x 3 dev dev 4096 4월 16 22:32 ../ -rw-r--r-- 1 dev dev 61 3월 9 01:22 .eclipseproduct drwxr-xr-x 2 dev dev 4096 3월 14 01:18 META-INF/ -rwxr-xr-x 1 dev dev 86328 3월 14 01:16 SpringToolSuite4* -rw-r--r-- 1 dev dev 681 3월 14 01:20 SpringToolSuite4.ini -rw-r--r-- 1 dev dev 160278 3월 14 01:20 artifacts.xml drwxr-xr-x 5 dev dev 4096 3월 14 01:18 configuration/ drwxr-xr-x 2 dev dev 4096 3월 14 01:18 dropins/ drwxr-xr-x 72 dev dev 12288 3월 14 01:20 features/ -rwxr-xr-x 1 dev dev 136129 3월 14 01:16 icon.xpm* -rw-r--r-- 1 dev dev 11522 3월 14 01:12 license.txt -rw-r--r-- 1 dev dev 845709 3월 14 01:20 open-source-licenses.txt drwxr-xr-x 5 dev dev 4096 3월 14 01:19 p2/ drwxr-xr-x 24 dev dev 53248 3월 14 01:20 plugins/ drwxr-xr-x 2 dev dev 4096 3월 14 01:18 readme/