๐ ํ๊ฒฝ
Mac M1
Python 3.9
VsCode
๐ ๊ฐ์
Django์ env๊ฐ์ Prod, Dev์์ ์ฝ๊ฒ ์ฌ์ฉํ๊ณ ๊ตฌ๋ถํ๊ธฐ ์ํด settings ๊ตฌ์กฐ๋ฅผ ๋ง๋ค์ด๋ด ์๋ค!
๐ ๋ชฉ์ฐจ
- ํ๋ก์ ํธ๋ฅผ ์์ฑํ๊ธฐ
- ๊ฒฐ๊ณผ ํ์ธํ๊ธฐ
- ํ๋ก์ ํธ ์์ฑํ๊ธฐ
django-admin startproject config .
์์ ๋ช
๋ น์ด๋ก ํ๋ก์ ํธ๋ฅผ ์์ฑํด์ค๋๋ค. manage.py๊ฐ ๋ฐ์ผ๋ก ๋น ์ง๋๋ค.
๊ทธ๋ฆฌ๊ณ django-admin startapp ์ฑ ์ด๋ฆ ๋ช
๋ น์ด๋ก app์ ๋ง๋ค์์ ๋ ๊ตฌ์กฐ๊ฐ ๊ฐ๋
์ฑ์ด ์ข์ต๋๋ค.
pip install python-dotenv ๋ช
๋ น์ด๋ก env lib๋ฅผ ์ค์นํฉ๋๋ค.
. env ํ์ผ์ manage.py์ ๋์ผํ ํด๋์ ์์ฑํฉ๋๋ค. ์ ๋ ์๋์ ๊ฐ์ด ์์ฑํ์ต๋๋ค.
#Local DB
DB_NAME_DEV = "yeol_dev"
DB_NAME_PROD = "yeol_prod"
configํด๋ ๋ด๋ถ๋ฅผ ์ดํด๋ด
์๋ค. settings.py๊ฐ ์กด์ฌํฉ๋๋ค. settings ํด๋๋ฅผ ๋ง๋ค์ด์ฃผ์ธ์.
settings.py๋ base.py๋ก ์ด๋ฆ์ ๋ณ๊ฒฝํ๊ณ ํด๋ ์์ ๋ฃ์ด์ค๋๋ค.
ํด๋น ํด๋ ๋ด์ ์๋์ ๊ฐ์ prod.py, dev.py๋ฅผ ๋ง๋ค์ด์ค๋๋ค.
ํ์ผ๋ช
-> dev.py
from .base import *
from dotenv import load_dotenv
load_dotenv(verbose=True) #.env๊ฐ ๋๋ฝ์ผ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ฉ์์ง ์ถ๋ ฅํ๋์ต์
DB_NAME = os.environ.get("DB_NAME_DEV")
ํ์ผ๋ช
-> prod.py
from .base import *
from dotenv import load_dotenv
load_dotenv(verbose=True) #.env๊ฐ ๋๋ฝ์ผ๊ฒฝ์ฐ ๊ฒฝ๊ณ ๋ฉ์์ง ์ถ๋ ฅํ๋์ต์
DB_NAME = os.environ.get("DB_NAME_PROD")
- ๊ฒฐ๊ณผ ํ์ธํ๊ธฐ
์ธํ
์ด ๋๋ฌ๋ค๋ฉด ์๋์ ๊ฐ์ด settings์ ๊ฐ์ ์ฌ์ฉํฉ์๋ค.
settings๊ฐ์ ๋ณ์๋ก ๊ฐ์ ธ์ค๋ฉด prod์ dev๋ ์คํํ ๋์ setting๊ฐ ๋ณ๊ฒฝ๋ง์ผ๋ก ์ปจํธ๋กค์ด ๊ฐ๋ฅํฉ๋๋ค.
์ ๋ API๋ฅผ ํ๋ ๋ง๋ค์ด postman์ ์ฌ์ฉํด ํ
์คํธ๋ฅผ ์๋ฃํ์ต๋๋ค.
๊ณตํต์ ์ค์ ์ base.py์์ ์ปจํธ๋กคํ๋ฉด ๋ฉ๋๋ค. ์ด๋ ๊ฒ ์ฌ์ฉํ๋ฉด local, dev, prod ํ๊ฒฝ ์ด๋์์๋ ์ฝ๋๋ฅผ ๊น๋ํ๊ฒ ์ ์งํ ์ ์์ต๋๋ค.
๐ ๊ทผ๊ฑฐ ์๋ ์กฐ์ธ์ ์ธ์ ๋ ํ์ํฉ๋๋ค. ์ฑ์คํ ์ฝ๋ฉ ํ์ธ์.