Setting Environment
OS : mac OS X Mojave
Python : 3.6.5
Django : 2.2.1
위 버전들을 바탕으로 Django 개발 환경 세팅을 진행하겠습니다.
1. python version 세팅
# pyenv를 homebrew를 이용해 설치
$ brew install pyenv
# 환경 변수 세팅
# 아래 내용들을 파일 끝에 추가
# zsh을 사용할 경우 ~/.zshrc
$ vi ~/.bashrc
export PATH="$HOME/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
# 특정 버전을 pyenv를 통해 설치(여기서는 3.6.5)
#
# zipimport.ZipImportError: can't decompress data; zlib not available
# 위와 같은 에러가 뜬다면 아래처럼 환경변수를 추가해 설치
# LDFLAGS="-L/usr/local/opt/zlib/lib" CPPFLAGS="-I/usr/local/opt/zlib/include" pyenv install 3.6.5
$ pyenv install <~python-version~>
# 실제 3.6.5 버전이 설치 되었는지 확인
$ pyenv versions
# virtualenv 설정을 위한 homebrew를 이용해 pyenv-virtualenv 설치
$ brew install pyenv-virtualenv
# virtualenv 생성
$ pyenv virtualenv <~python-version~> <~virtualenv-name~>
2. Django 설치
# virtualev activate
$ pyenv activate <~virtualenv-name~>
# pip를 이용한 Django 설치
$ pip install django==<~django-version~>
# django 설치 검증
# django 버전이 출력된다면 제대로 설치 완료
$ python -m django --version
<~django-version~>
3. Django start project 생성
# django admin을 사용한 start project 생성
# <~project-name~>으로 folder가 생성됨.
$ django-admin startproject <~project-name~>
# project로 change directory
$ cd <~project-name~>
# run development server
$ python manage.py runserver
python manage.py runserver
Watching for file changes with StatReloader
Performing system checks...
System check identified no issues (0 silenced).
You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
Run 'python manage.py migrate' to apply them.
May 29, 2019 - 17:20:27
Django version 2.2.1, using settings 'exmatch.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
4. Project 생성 확인
제대로 서버가 생성되었다면 http://127.0.0.1:8000/ 에 접속하시면
아래처럼 page가 뜨시는 것을 확인하실 수 있습니다
5. Django start app 생성
# manage.py를 사용한 start app 생성
$ python manage.py startapp <~app-name~>
6. Django MySQL Setting
# <~project-name~>/setting.py
...
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'api',
]
...
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '<~hostname~>',
'PORT': '<~PORT~>',
'USER': '<~username~>',
'PASSWORD': '<~password~>',
'NAME': '<~database-name~>',
}
}
...
7. MySQL migration
# install mysqlClient
$ pip install mysqlclient
# <~app-name~>의 db model 생성
$ python manage.py makemigrations
# django app db model 생성
$ python manage.py migrate