프로젝트가 만들어지면 그 하위에 애플리케이션 디렉토리 및 파일을 구성한다. 장고는 이를 위한 장고 쉘 커맨드를 제공한다.
이 외에도 templates, static, logs 등의 디렉토리가 필요하다.
>django-admin startproject mysite // mysite라는 프로젝트 생성
>python manage.py startapp polls // polls라는 애플리케이션 생성
>notepad settings.py // 설정 파일을 확인 및 수정
>python manage.py migrate // 데이터베이스에 기본 테이블 생성
>python manage.py runserver // 현재까지 작업을 개발용 웹 서버로 확인
mysite 프로젝트 생성
(venv) C:\Users\User\PycharmProjects\django_backend>django-admin startproject mysite
하위 mysite 디렉토리 : 프로젝트 디렉토리
상위 mysite 디렉토리 : 프로젝트 관련 디렉토리/파일을 모으는 역할만 하는 디렉토리
상위 mysite 디렉토리는 혼동을 피하기 위해 ch3라고 변경
(venv) C:\Users\User\PycharmProjects\django_backend>move mysite ch3
1개의 디렉터리를 이동했습니다.
(venv) C:\Users\User\PycharmProjects\django_backend\ch3>python manage.py startapp polls
settings.py 파일은 프로젝트의 전반적인 사항들을 설정해주는 곳으로, 루트 디렉토리를 포함한 각종 디렉토리 위치, 로그의 형식, 프로젝트에 포함된 애플리케이션의 이름 등이 지정되어 있다.
1. ALLOWED_HOSTS 항목 지정
장고는 DEBUG=True이면 개발 모드로, False이면 운영 모드로 인식한다. 운영 모드인 경우는 ALLOWED_HOSTS에 반드시 서버의 IP나 도메인을 지정해야 하고, 개발 모드일 경우 지정하지 않아도 [ 'localhost', '127.0.0.1' ] 로 간주한다.
2. 프로젝트에 포함되는 애플리케이션들은 모두 설정 파일에 등록되어야 한다. (polls)
애플리케이션 모델명이 polls만 등록해도 되지만 애플리케이션의 설정 클래스로 등록하는 것이 더 정확하다.
INSTALLED_APPS = [
// 생략
'polls.apps.PollsConfig', // 추가
]
3. 프로젝트에 사용할 DB 엔진
장고는 디폴트로 SQLige3 DB 엔진을 사용하도록 설정되어 있다.
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
4. 타임존 지정
최초에는 세계표준시(UTC)로 되어 있는데 한국 시간으로 변경한다.
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asiz/Seoul'
변경 사항을 DB에 반영해주는 migrate를 실행한다.
(venv) C:\Users\User\PycharmProjects\django_backend\ch3>python manage.py migrate
DB 테이블을 생성하진 않았지만 장고가 미리 정의해둔 사용자 및 그룹 테이블 등을 만들어주기 위해 프로젝트 개발 시작 시점에 이 명령을 실행하는 것이다.
확인을 위해 웹 서버를 실행하고, 웹 서버에 접속해본다.
(venv) C:\Users\User\PycharmProjects\django_backend\ch3>python manage.py runserver 0.0.0
.0:8000
명령 입력 시 자신의 서버에 맞는 IP 주소와 포트번호를 입력하면 된다. 0.0.0.0이란 IP 주소의 의미는 현재 명령을 실행 중인 서버의 IP 주소가 무엇으로 설정되어 있더라도 그와는 무관하게 웹 접속 요청을 받겠다는 의미이다.
즉, 웹 브라우저의 주소창에서는 runserver를 실행중인 서버의 실제 IP 주소를 입력하면 된다.
http://127.0.0.1:8000/admin 접속
admin 페이지 접속 시 계속 오류가 생겨서 설정 파일에서 INSTALLED_APPS에서 polls로 바꿔주니까 해결됐다.
슈퍼 계정 생성하기
python manage.py createsuperuser 명령으로 생성 후 로그인
장고에서 만들어준 Users와 Groups 테이블이 생성된 것을 확인할 수 있다.
출처: Django로 배우는 파이썬 웹 프로그래밍(기초) - 김석훈님