C.R.U.D์์ (
๋๋ฌผํ๋ฆฌ๋ฉฐ) ๋ฐฐ์ด๊ฑธ ์ค์ ๋ก ํ๋ฒ ์จ๋จน์ ์๊ฐ๐ ์๋ค๋ค ์๋ค๋ค~ ์์คํ๊ทธ๋จ์ด ์๋ค๋ค~๐
WECODE์์ ์ง๊ธ๊น์ง ๋ฐฐ์ด ๊ฐ๋
๋ค์ ๋ชจ๋ ์ ์ฉํ๋ ์๊ฐ์ด๋ค. ๋ฐฑ์๋๊ฐ ๋ฌด์์ธ์ง ๊ฐ์ ์ ๋ชป์ก๊ณ ์์๋๋ฐ, ์ค์ง์ ์ผ๋ก ํ๋ก์ ํธ๋ฅผ ๋ง๋ค๊ณ ๊ทธ ์์ ๊ผผ๊ผผํ๊ฒ ๊ตฌ์ถํ๋ค ์ง์ ํต์ ํด๋ณด๋ ์๊ฐ์ด์๋ค!
๋ค๋ฅธ๋ถ๋ค๋ณด๋ค ์ฐธ ์ค๋ ๊ฑธ๋ ธ๋๋ฐ...ใ
...ใ
ใ
๊ทธ๋์ ๋ ์ ์ ์ด ๊น์ ๋ด ์ฝ๋๋ค! ๋ค๋ฅธ ๋ถ๋ค์ด ๋ณด๋ฉด ์ด๊ฒ ๋ญ์ผ? ํ์ค์๋ ์๊ฒ ์ง๋ง.. ํ๋ฒ ์ฐจ๊ทผ์ฐจ๊ทผ ์ ๋ฆฌํด๋ณด๋ คํ๋ค!
์์คํ๊ทธ๋จ์ ์ํ ๊ธฐ๋ณธ์ ์๋ฃ๋ฅผ ๋ฉํ ๋๋ค์ด ์ฌ๋ ค๋์ Github์์ ๊ฐ์ ธ์ค๊ธฐ๋ก ํ๋ค.
git.. ์์ง๋ ๋ฏ์ค๊ณ ๋ฌด์์ด ์กด์ฌ์ธ๋ฐ.. ์ด๋ฒ์๋ ์ฒ์ ์๋ํ๋๊ฑฐ๋ผ ๋ฉํ ๋๋ค์ด๋ ํจ๊ป ํด์ ๋นจ๋ฆฌ ๋ฐ์ ์ ์์๋ค!
์์ ํ๋ฆ๋๋ก ์งํ์ด ๋๋ค!
git init
์ผ๋ก git์ ์์ฑํ๋คgit branch ๋ง๋ค๊ณ ์ถ์์ด๋ฆ
๋ช
๋ น์ด๋ก branch๋ฅผ ์์ฑํ๋ค.git checkout ๋ธ๋ ์น์ด๋ฆ
git clone ์ฃผ์(github์์ ๊ฐ์ ธ์ด)
์ฒ์ ๋ฐ์์ค๋๊ฑฐ๋๊น clone
์ ํ๋ค!(2,3๋ฒ์งธ๋ก ๋ฐ์์ค๋๊ฑฐ๋ฉด ์ ์ด๋ฏธ์ง์ git pull
์ ์ด์ฉ!!$ django-admin startproject westagram
๊น์ ์ฌ๋ฆด๋ ์ฌ๋ฆฌ๊ณ ์ถ์ง ์์๊ฒ๋ค์ด ์กด์ฌํ๊ธฐ ๋ง๋ จ์ด๋ค. ์ด๊ฒฝ์ฐ ์ฌ์ฉํ๋ ๊ฒ์ผ๋ก ํด๋น ๊น์ด ์ค์น๋ ๋๋ ํ ๋ฆฌ(westagram)์ .gitignore
๋ผ๋ ํ์ผ์ ์์ฑํ ๊ด๋ฆฌํด์ผํ๋ค.
1.gitignore์ฌ์ดํธ์ ๋ค์ด๊ฐ .gitignore
์ ์ ์ฉํ ์์๋ค์ ์์ฑ&๋ณต์ฌ ํ๋ค.
2.1๋ฒ์ ๊ฒฐ๊ณผ๋ฌผ์ ๋ณต์ฌํ๋ค ๋ด์ฉ์ ์ ์ฅํ๋ค
cd 'ํ๋ก์ ํธ ํด๋๋ช
'
touch .gitignore
#vi๋ฅผ ํตํด 1๋ฒ์์ ๋ณต์ฌํ ๋ด์ฉ์ ๋ฃ์ด์ค๋ค
vi .gitignore
#์๋ ๋๊ฐ์ง ์ถ๊ฐ
my_settings.py (๋ณด์ ๊ด๋ จ ํ์ผ์ github์ ์
๋ก๋๋๋ฉด ์๋จ)
*.csv (crwalingํ ํ์ผ ์ญ์ ์
๋ก๋ํ์ง ์๋๋ค)
#westagram(project)/settings.py
SECRET_KEY = my_settings.SECRET
DEBUG = True
ALLOWED_HOSTS = ['*']
INSTALLED_APPS = [
# 'django.contrib.admin',
# 'django.contrib.auth',
'corsheaders',
'user',
]
MIDDLEWARE = [
# 'django.middleware.csrf.CsrfViewMiddleware',
# 'django.contrib.auth.middleware.AuthenticationMiddleware',
'corsheaders.middleware.CorsMiddleware',
]
DATABASES = my_settings.DATABASES
์ฐ๋ฆฌ์ ์ปดํจํฐ๋ ํญ์ ๊ณ ์ ์ ์ธ ๊ฐ์ ๊ฐ์ง๊ณ ์๋๋ฐ, ์ด๊ฑธ git์ ํตํด github์ ์ฌ๋ฆฐ๋ค๊ณ ์๊ฐํด๋ณด๋ผ...
๋น๋ฐ๋ฒํธ ์คํํ๋๊ฑฐ๋ ๋ค๋ฆ์ด ์๋๊ฑฐ๊ธฐ ๋๋ฌธ์ ์ด๊ฑธ my_settings.py๋ผ๋ ํ์ผ์ ํ๋ ๋ง๋ค์ด ์ค๋ค, ์ฌ๊ธฐ์ ์
๋ ฅํ๊ณ
git๋ช
๋ น์ด
๋ฅผ ํตํด github์ pushํ ๋ ์ํฅ์ด ์๋๋ก ์ค์ ํ๋ค. ์ด ๋ช
๋ น์ด๋ ๋ค์ ๋์ฌ๊ฑฐ๋ค~
๋๋ฒ๊ทธ! ์ด๊ฑด ์ฐ๋ฆฌ๊ฐ ์ค์ ๋ก ์ ์ ์๊ฒ ๊ณต๊ฐํ ๋๋ False
๋ฅผ ํด์ ๋ฌด์จ ๋ด์ฉ์ธ์ง ๋ชจ๋ฅด๊ฒํ๋ค!
๊ทธ๋ฌ๋ ์ง๊ธ์ ์ฐ๋ฆฌ๊ฐ ๋ฌด์จ ์๋ฌ๊ฐ ๋๋ฅผ ๊ดด๋กญํ๋์ง ์ ํ์๊ฐ ์์ผ๋ฏ๋ก, True
๋ก ์ค์ ํด๋๋ค.
corsheaders
,user
: ๋๋ ์ด ํ๋ก์ ํธ๋ฅผ ์ด๊ดํ๋ ํ์ผ๋ช
์ user๋ผ๊ณ ์ง์ ํ๋ค. ์ฐ๋ฆฌ ํ์ผ์๊ฒ๋ ์ด ์ฌ์ค์ ์๋ ค์ฃผ๋๊ฒ์ด๋ค. corsheaderss๋ Cross Domain์ด์๊ฐ ๋ฐ์๋๊ธฐ ์ ์ ์ฌ์ ์ ์ฒ๋ฆฌ๋ฅผ ๋์์ค๋ค๋ฐ์ดํฐ๋ฒ ์ด์ค๋ my_settings.py์ ๊ธฐ๋ณธ ์ค์ ์ ๋ถ๋ฌ์ ์ฌ์ฉํ ์์ ์ด๋ฏ๋ก ๋ฐ๊ฟ์ค๋ค.
DATABASES = {
'default' : {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'project์ด๋ฆ',
'USER': 'root',
'PASSWORD': '๋น๋ฐ๋ฒํธ',
'HOST': '127.0.0.1',
'PORT': '์ ํด์ค ๋๋ก',
}
}
SECRET ='์ฟ!'
์ด๊ฒ๋ ๋ฉํ ๋๋ค์ด ๋ค ์๋ ค์ฃผ์ ๋ด์ฉ์ธ๋ฐ, ์ด๋ฐ์์ผ๋ก ์ ๋ ฅํ๋ค.
SECRET
๋ ์์์ ๋งํ๋ ๋ณด์์ ์ํด ๋ณ๋๋ก ๋นผ๋์๋ค.ํํ๋ก์ ํธ์์ ํ์์ ์ธ ์กด์ฌ๋ก, ๋ค๋ฅธ ์ฌ๋๋ค์ด ๋ด ์ฝ๋๋ฅผ ์ ๋ฌ๋ฐ์๋, ๋๋ ๋์ผํ ํ๊ฒฝ์ ๊ตฌ์ฑํ ์ ์๋๋ก ์ ๋ณด๋ฅผ ์ ๋ฌํด์ผํ๋ค.
github์ pushํ ๋ ๋ด๊ฐ ์ด๋ค ํ๊ฒฝ์ด์๋์ง๋ฅผ ์๋ ค์ฃผ๊ณ ๋ ํ๋์ ํ
์คํธ๋ฅผ ๋ง๋๋๋ฐ, ์ด๊ฒ๋ฐ๋ก requirement.txt
์ด๋ค
ํด๋น ๊ณผ์ ์ MySQL์ ์ค์น๋ ํ์ ๊ณผ์ ์ด๋ค
$ mysql.server start
$ mysql -u root -p
mysql> create database "NAME" character set utf8mb4 collate utf8mb4_general_ci;
์ด์ ์๋ makemigrations
์ ํ์ง ์๊ณ ๋ฐ๋ก migrate
๋ฅผ ํด์ฃผ๋ฉด ๋๋ค! ์์ง models.py์ ์ค์ ์ด ์๊ธฐ ๋๋ฌธ
$ python manage.py migrate
๊ฐ๋จ(?)ํ๊ฒ ์๋ ๊ฒ ์ ํ ์ ํด์ฃผ๋ฉด ๋๋ค! ๊ทธ๋ฌ๋ฉด ์ด์ ๋ถํฐ ์ฐ๋ฆฌ๋ ํ์๊ฐ์ ๊ณผ ๋ก๊ทธ์ธ์ ํฅํ ์ฌ์ ๐งณ ์ ์์ํ ์ ์๋ค~