velog
폴더 생성
mkdir velog
cd velog
pyenv
파이썬 가상환경 생성
pyenv virtualenv env-velog
pyenv local env-velog
poetry
이용해 라이브러리 관리
poetry init
poetry add django
Django 프로젝트 생성 및 Pycharm 열기
django-admin startproject config .
pycharm-community .
Settings 탭에서 System Interpreter 설정
Django runserver 실행해 작동 확인
python manage.py runserver
config/settings.py
우클릭 -> Refactor
-> Convert to Python Package
클릭
(배포시 웹서버와 Python을 통신해주는) config/wsgi.py
파일도 똑같이
settings 폴더 내 _base.py
, dev.py
, prod.py
파일 각각 생성
_base.py
파일은 공통 정보를 저장하는 곳일 뿐이라 파일명 앞에 _
넣음wsgi 폴더 내에도 dev.py
, prod.py
파일 각각 생성
settings/__init__.py
파일 내용 전체를 _base.py
파일로 이동
dev.py
, prod.py
파일에서 각각 _base.py
파일 임포트
from ._base import *
wsgi/__init__.py
파일 내용 전체도 dev.py
, prod.py
파일로 각각 이동해 일부 수정
# wsgi/dev.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.dev') # 수정
application = get_wsgi_application()
# wsgi/prod.py
import os
from django.core.wsgi import get_wsgi_application
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings.prod') # 수정
application = get_wsgi_application()
settings/__init__.py
파일 내용 추가 (환경 모듈 분리)
# setttings/__init__.py
import os
# 환경 변수에 저장된 값을 불러옴
SETTINGS_MODULE = os.environ.get('DJANGO_SETTINGS_MODULE')
# 환경 변수가 비어있거나 'config.settings'일 경우 dev 설정 파일 불러옴
if not SETTINGS_MODULE or SETTINGS_MODULE == 'config.settings':
from .dev import *
# 환경 변수가 'config.settings.prod'일 경우 prod 설정 파일 불러옴
elif SETTINGS_MODULE == 'config.settings.prod':
from .prod import *
_base.py
파일에서 dev/prod 분리할 정보를 각각 dev.py
, prod.py
파일로 이동해 수정
# settings/dev.py
from ._base import *
DEBUG = True
ALLOWED_HOSTS = ['*'] # 모든 호스트 허용
WSGI_APPLICATION = 'config.wsgi.dev.application' # 수정
INSTALLED_APPS += []
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# settings/prod.py
from ._base import *
DEBUG = False # 수정
ALLOWED_HOSTS = ['*'] # 추후 배포할 호스트 주소 입력 예정
WSGI_APPLICATION = 'config.wsgi.prod.application' # 수정
INSTALLED_APPS += []
# DATABASES = {} 추후 실제 배포시 사용할 DB 정보 입력 예정
dev 환경에서 runserver 테스트
python manage.py runserver
prod 환경에서 runserver 테스트
python manage.py runserver --settings=config.settings.prod
.
├── .idea
├── .python-version
├── config
│ ├── __init__.py
│ ├── __pycache__
│ ├── asgi.py
│ ├── settings
│ │ ├── __init__.py
│ │ ├── __pycache__
│ │ ├── _base.py
│ │ ├── dev.py
│ │ └── prod.py
│ ├── urls.py
│ └── wsgi
│ ├── __init__.py
│ ├── __pycache__
│ ├── dev.py
│ └── prod.py
├── manage.py
├── poetry.lock
└── pyproject.toml