장고 서비스를 수행하기 위해서는 연동하고자 하는 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 으로 접속을 해보겠습니다.
django admin 접속
앞서 생성한 user와 비밀 번호를 입력하면 그럴듯한 화면이 나타납니다.
별다른 코드 작성을 하지 않았는데 Django에서는 기본으로 admin 앱을 제공해주고 있습니다.
django admin login
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