설정파일 셋팅하기
기본 테이블 생성하기
슈퍼유저 생성하기
프로젝트 하위에 애플리케이션 개발을 위한 디렉토리와 파일을 구성하기
[ch3] ------db.sqlite3
|---manage.py
|---[mysite]------__init__.py
| |---settings.py
| |---urls.py
| |---wsgi.py
|---[polls]-------__init__.py
|---admin.py
|---apps.py
|---[migrations]------__init__.py
|---models.py
|---tests.py
|---views.py
항목명 | 설명 |
---|---|
ch3 디렉토리 | 최상위 루트 디렉토리. 그냥 디렉토리일 뿐임. settings.py 파일에서 BASE_DIR 항목으로 지정됨 |
db.sqlite3 | 데이터베이스 파일, 테이블이 들어 있음 |
manage.py | 장고 명령어 처리하는 파일 |
mysite 디렉토리 | 프로젝트명으로 만들어진 디렉토리, 프로젝트의 최상위 프로젝트 관련 파일들이 들어 있음 |
init.py | 디렉토리에 있으면, 패키지로 인식함 |
settings.py | 프로젝트 설정파일 |
urls.py | 최상위 URLconf 파일 |
wsgi.py | 웹서버와 연동하기 위한 WSGI 연동 파일 |
polls 디렉토리 | 애플리케이션명으로 생성된 디렉토리 해당 애플리케이션 파일들이 들어 있음 |
init.py | 이 파일이 있으면 파이썬 패키지로 인식함 |
admin.py | Admin 사이트에 모델을 등록해주는 파일 |
apps.py | 어플리케이션의 설정 클래스를 정의 |
migrations 디렉토리 | 데이터베이스 변경사항 관리하기 위한 디렉토리 |
models.py | 데이터베이스 모델 클래스 정의 |
tests.py | 단위테스트용 파일. 없어도 됨 |
views.py | 뷰 함수 정의 |
templetes 디렉토리 | 프로젝트별 템플릿과 어플리케이션별 템플릿을 위한 디렉토리를 생성함 mysite/templetes 및 polls/templetes 위치에 생성됨 |
static 디렉토리 | 정적파일들을 저장(CSS, javascript파일, image 등) 프로젝트 레벨과 어플리케이션 레벨에 생성됨 mysite/static 및 polls/static 위치에 생성될 수 있음 |
logs 디렉토리 | 로그파일들이 생성되는 디렉토리 settings.py 파일에 LOGGING 항목으로 위치가 지정됨 |
프로젝트는 django-admin startproject 명령어로 생성함 어플리케이션은 python manage.py startapp 명령어를 이용하여 생성함
>django-admin startproject mysite //mysite라는 프로젝트 생성,base_dir(root 디렉토리) 도 mysite로 생성됨, 후에 mysite 라는 이름은 추후 원하는 이름으로 변경해도 됨.
> mv mysite rootdir //하위의 프로젝트 디렉토리와 햇깔릴 수 있으므로, base 디렉토리를 다른 이름으로 변경함
> cd mysite // base 디렉토리 안으로 이동
>python manage.py startapp polls //manage.py 파일은 장고 명령어를 처리하는 파일임. polls 이라는 어플리케이션을 생성
> cd mysite // 프로젝트 관리 디렉토리로 이동
>notepad settings.py //settings.py 파일을 열어 설정을 확인함
> cd .. //base 디렉토리로 이동, manage.py 파일이 base 디렉토리 하위에 있기 때문에...
>python manage.py migrate //데이터베이스에 기본테이블 생성, db.sqlite3 파일이 생성됨
>python manage.py runserver //현재까지 생성된 작업을 테스트용 서버에서 확인, 웹 브라우저에서 http://localhost:8000 으로 확인함.
$ > django-admin startproject mysite
$ > cd mv mysite dootdir
$ > cd rootdir
$rootdir > python manage.py startapp polls
mysite 프로젝트 디렉토리 하위의 settings.py 파일을 변경.
각종 디렉토리 위치, 로그 형식, 프로젝트에 포함된 어플리케이션들의 이름등이 정의되어 있음.
$ mysite > vim settings.py
DEBUG=True 면 개발모드, false 면 운영모드
운영모드의 경우, 반드시 ALLOWED_HOSTS에 서버의 IP나 도메인을 지정해야 함
ALLOWED_HOSTS = ['localhost','127.0.0.1']
프로젝트에 포함되는 어플리케이션을 모두 설정파일에 등록
간단하게 어플리케이션 이름 (polls)을 등록해도 되지만, 어플리케이션의 설정 클래스를 등록하는 것이 더 정확함
polls 의 어플리케이션 설정 클래스는 polls 하단의 apps.py 파일내에 있음
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls.apps.AppConfig'
]
장고는 default로 SQLite3 데이터베이스 엔진을 사용하도록 설정됨
다른 데이터베이스 엔진으로 변경 할 수도 있음
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
‘UTC'(섹계표준시)로 되어 있는 것을 ‘Asia/Seoul'로 변경
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Seoul'
사용자 및 그룹 테이블등을 기본적으로 생성해주는 작업
migrate 명령을 실행하면 db.SQLite3 파일이 자동 생성됨
$ rootdir> python manage.py migrate
$ rootdir> python manage.py runserver 0.0.0.0:8000 // 주소 0.0.0.0 의 의미는, 현재 명령을 실행하는 서버의 ip와 무관하게 웹 접속을 받겠다는 의미
python manage.py runserver : 디폴트로 127.0.0.1:8000 을 사용함
python manage.py runserver 8888 : 127.0.0.1:8888 을 사용함
python manage.py runserver 0.0.0.0:8000& : &를 명령 끝에 추가하면, 백그라운드에서 실행함
$>python manage.py createsuperuser
# window
$ C:> tree /F rootdir
# macos
> brew install tree
> tree rootdir