Django๋ฅผ ์ด์ฉํ์ฌ ์น ํ๋ซํผ ๋ง๋ค๊ธฐ
๐ ํ๋ก์ ํธ ํฌ์คํ ์
๊ฐ์ธ ์ ์ํ ํ๋ก์ ํธ๋ฅผ ๋ฆฌ๋ทฐํ๊ณ ํ ๋ฒ ์ ๋ฆฌํ๋ ํฌ์คํ ์ ๋๋ค.
์ด๋ฒ ํ๋ก์ ํธ์์๋ Django ํ๋ ์ ์ํฌ๋ฅผ ์ฌ์ฉํ์ฌ
์ง์ ์น ํ๋ซํผ์ ์ ์ํ๋ ๊ฒ์ด ๋ชฉํ์ ๋๋ค.
๐ค ํ๋ซํผ์ด๋?
์ผ๋ฐ์ ์ผ๋ก ํ๋ซํผ์ด๋
์ฌ๋ฌ ์ฌ๋์ด ์ด์ฉํ๊ธฐ ํธ๋ฆฌํ๊ฒ ๋ง๋ค์ด ์ฃผ๋ ๊ฒ์ ๋งํฉ๋๋ค.
IT ๋ถ์ผ์์์ ํ๋ซํผ์ ์ํํธ์จ์ด๋ฅผ ์๋์ํฌ ๋
๊ธฐ๋ฐ์ด ๋๋ OS ์ข ๋ฅ๋ ํ๊ฒฝ์ ๋งํฉ๋๋ค.
๐ค ์ฅ๊ณ (django)๋?
์ฅ๊ณ ๋ ํ์ด์ฌ์ผ๋ก ์์ฑ๋ ์คํ ์์ค ์น ํ๋ ์์ํฌ์ ๋๋ค.
์น ํ๋ ์ ์ํฌ๋ ๋์ ์ธ ์น ํ์ด์ง๋, ์น ์ ํ๋ฆฌ์ผ์ด์ , ์น ์๋น์ค ๊ฐ๋ฐ์
๋ณด์กฐ์ฉ์ผ๋ก ๋ง๋ค์ด์ง ํ๋ ์ ์ํฌ์ ์ผ์ข ์ ๋๋ค.
๋ค์ํ ๊ธฐ๋ฅ๋ค์ ์ฌ์ฉํ ์ ์๋ ๋งํผ, ํ ์คํฌ๋ฆฝํธ ์์์ ๋ชจ๋ ๊ตฌํํ ์ ์์ผ๋ฏ๋ก
๊ธฐ๋ฅ ๋ณ๋ก ๋ถํ ํ์ฌ ์ฝ๋๋ฅผ ์์ฑํ๊ณ ํฉ์น๋ ๋ฐฉ์์ผ๋ก ๊ฐ๋ฐ์ ์งํํฉ๋๋ค.
์ฅ๊ณ ๋ ๊ธฐ๋ณธ์ ์ผ๋ก MVT ํจํด์ ๋๋ค.
Model | ๋ฐ์ดํฐ์ ์์ฒ์ด ๋๋ ๋ฐ์ดํฐ ๋ฒ ์ด์ค๋ฅผ ๊ตฌ์ฑํ๋ ์ญํ ์ ํ๋ค. |
View | ๋ฐ์ดํฐ์ ๋ณ๊ฒฝ์ด ํ์ํ ๋ถ๋ถ์ ๋ชจ๋ธ์ ์์ฒญํ๊ณ , ๊ฒฐ๊ณผ๊ฐ์ HTML ๋ฌธ์์ ๋ํ๋ด๋ ์ญํ ์ ํ๋ค. |
Template | ํ๋ฉด์ UI๋ฅผ ๋ด๋นํ๋ ์ญํ ์ ํ๋ค. |
django ์ค์น
1. ๋จผ์ Django๋ฅผ ์ค์นํ๊ธฐ ์ ์ ํ์ด์ฌ์ ์ค์นํด์ฃผ์ด์ผ ํ๋ค.
์น์ผ๋ก ์ค์น : https://www.python.org/downloads/
(์ฃผ์! ํ์ด์ฌ ํด๋๋ฅผ PATH์ ์ถ๊ฐํ๋ ๋ฐ์ค์ ๊ผญ ์ฒดํฌํด์ผ ํ๋ค.)
Download Python
The official home of the Python Programming Language
www.python.org
vscode๋ก ์ค์น : Ctrl+Shift+X๋ฅผ ๋๋ฌ python ๊ฒ์ ํ ์ค์นํ๋ค.
2. vscode์์ ํฐ๋ฏธ๋์ฐฝ์ ์ด๊ณ pip install pipenv ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ pipenv๋ฅผ ์ค์นํ๋ค.
pip ๋ช ๋ น์ด๋ ํ์ด์ฌ์ผ๋ก ์์ฑํ ํจํค์ง๋ฅผ ๊ด๋ฆฌํ๋ ๋๊ตฌ๋ฅผ ๋งํฉ๋๋ค.
pip ๋ช ๋ น์ด๋ฅผ ํตํด pipenv๋ฅผ ์ค์นํ์ฌ ํจํค์ง๋ฅผ ๋ค์ด๋ก๋ํ ๊ฐ์ ํ๊ฒฝ์ ๊ตฌ์ฑํฉ๋๋ค.
์ฌ๊ธฐ์ ๊ฐ์ ํ๊ฒฝ์ ๊ตฌ์ฑํ๋ ์ด์ ๋
ํจํค์ง๋ฅผ ์ฌ์ฉํ ๋ ๋จ์ผ์ ํจํค์ง๊ฐ ์๋ ๋ค์ํ ์ข ๋ฅ์ ํจํค์ง๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง์ผ๋ฉฐ,
์ด๊ฒ์ ์ ์ญ์ผ๋ก ๋ค์ด๋ฐ์ ๊ฒฝ์ฐ ํจํค์ง๋ค ๊ฐ์ ์ถฉ๋์ด ์ผ์ด๋ ์ ์๋ค๋ ๋ฌธ์ ์ ์ด ์์ด
ํด๋๋ฅผ ๊ฐ์ ํ๊ฒฝ์ผ๋ก ๋ง๋ค์ด ๋๊ณ
๊ฐ์ ํ๊ฒฝ ์์์ ์์ ํ๋ ๊ฒ์ด ํ๋ก์ ํธ๋ฅผ ๊ด๋ฆฌํ๊ธฐ ์์ํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
pipenv๊ฐ ์ ์์ ์ผ๋ก ์ค์น๋ ๊ฒฝ์ฐ ์ฌ์ฉํ ์ ์๋ ๋ช ๋ น์ด ๋ฆฌ์คํธ๊ฐ ์ถ๋ ฅ๋๋ค.
3. ํ๋ก์ ํธ๋ฅผ ์ ์ฅํ ๋๋ ํฐ๋ฆฌ ์์ฑ ํ, ํด๋น ๊ฒฝ๋ก์์ pipenv --three ๋ช ๋ น์ด๋ฅผ ์คํํ์ฌ ๊ฐ์ํ๊ฒฝ ๊ตฌ์ฑํ๋ค.
4. ๊ฐ์ํ๊ฒฝ์ด ๊ตฌ์ฑ๋์์ผ๋ฉด, pipenv shell ๋ช
๋ น์ด๋ฅผ ํตํด ๊ฐ์ํ๊ฒฝ์ผ๋ก ๋ค์ด๊ฐ ์ ์๋ค.
ํฐ๋ฏธ๋ ์ฐฝ์ ํตํด ํ์ธํด ๋ณด๋ฉด
๊ธฐ์กด bash์์ pipenv๋ก ๋ณ๊ฒฝ๋ ๊ฒ์ ์ ์ ์๋ค.
๋ํ ์๋์ ๊ฐ์ pipfile์ด ํ๋ ์์ฑ๋๋๋ฐ
์ผ์ข ์ ๋ชฉ์ฐจ๋ผ๊ณ ์๊ฐํ๋ฉด ๋๋ค.
5. pipenv install Django๋ช
๋ น์ด๋ฅผ ์คํํ๋ฉด Django๋ฅผ ์ค์นํ ์ ์๋ค.
(๋ค์ ๋ฒ์ ์ ๋ถํ์ฃผ๋ฉด ํด๋น ๋ฒ์ ์ผ๋ก ์ค์น ๊ฐ๋ฅ)
python -m django --version๋ช
๋ น์ด๋ก ์ค์นํ ์ฅ๊ณ ์ ๋ฒ์ ํ์ธ ๊ฐ๋ฅ
์์ ๊ฐ์ ์ค์น ์๋ฃ ๋ช ๋ น์ด๊ฐ ๋์ค๋ฉฐ,
ํจํค์ง์ ์ฅ๊ณ ๊ฐ ํ์๋๋ค.
์ด๋ django = "*"์ ์๋ฏธ๋ ์ฅ๊ณ ์ค์น์ ๋ฒ์ ์ ๋ํ ์ง์นญ์ ํ์ง ์์
์ต์ ๋ฒ์ ์ผ๋ก ์ค์น๋์ด "*"๋ก ํ๊ธฐ๋ ๊ฒ์ด๋ค.
django ํ๋ก์ ํธ ๋ง๋ค๊ธฐ
1. [django-admin startproject ์ด๋ฆ] ๋ช
๋ น์ด๋ฅผ ํตํด ํ๋ก์ ํธ ๊ด๋ จ ํ์ผ์ ์์ฑํ ์ ์๋ค.
ํ๋ก์ ํธ ํ์ ํ์ผ๋ก๋ ๋ค์๊ณผ ๊ฐ๋ค.
__init__.py : ํด๋น ํ์ผ์ ํ์ด์ฌ์ ํจํค์ง๊ฐ์ด ๋ค๋ฃจ๋ผ๋ ์ฉ๋๋ก ๋จ์ํ ๋น ํ์ผ์ด๋ค.
settings.py : Django ํ๋ก์ ํธ์ ํ๊ฒฝ ๋ฐ ๊ตฌ์ฑ์ ์ ์ฅํ๋ ํ์ผ์ด๋ค.
url.py : url์ ์ ์ฅํ๋ ํ์ผ์ด๋ค. Django๋ก ์์ฑ๋ ์ฌ์ดํธ์ ๋ชฉ์ฐจ๋ผ๊ณ ํ ์ ์์ผ๋ฉฐ,
์ด ํ์ผ์ ์ฐธ์กฐํ๊ฒ ํ์ฌ url์ ๊น๋ํ๊ฒ ๋ค๋ฃฐ ์ ์๋ค.
asgi.py, wsgi.py : ASGI์ WSGI๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐํฌํ ๋ ์ ์ ์ด ๋๋ ํ์ผ์ด๋ค.
(Asgi์ wsgi๋ ์น์๋ฒ์ ์น ์ ํ๋ฆฌ์ผ์ด์
์ ์ธํฐํ์ด์ค๋ฅผ ์ํ ํ์ด์ฌ ํ๋ ์์ํฌ)
django ์ฑ ๋ง๋ค๊ธฐ
1. [django-admin startapp ์ด๋ฆ] ๋ช
๋ น์ด๋ฅผ ํตํด ์ ํ๋ฆฌ์ผ์ด์
ํ์ผ์ ์์ฑํ ์ ์๋ค.
์ด๋ฒ ์๊ฐ์ ๋ค๋ค๋ณผ ํ์ผ์ models.py์ admin.py์ด๋ค.
models.py๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ตฌ์กฐ๋ฅผ ๋ํ๋ด๋ ํ์ผ์ด๋ค.
์๋ฅผ ๋ค๋ฉด, ์น์์์ ์ ์ ์ ๋ณด์๋ ์์ด๋, ํจ์ค์๋, ์ด๋ฆ, ์๊ธฐ์๊ฐ ๋ฑ์ด ์๋๋ฐ,
๊ทธ๊ฒ์ models.py์ ํตํด ๊ตฌ์กฐ๋ฅผ ์ ์ํ๋ค.
admin.py๋ ์ด๋๋ฏผ ํ์ด์ง์ ๋ํ๋ผ ํจ๋์ ๋ค๋ฃจ๋ ํ์ผ์ด๋ค.
๋ง๋ ์ฑ์ ์ด๋๋ฏผ์๊ฒ ์๋ ค์ฃผ์ด์ผ ์ด๋๋ฏผ ํ์ด์ง์์ ์ฑ์ ๋ค๋ฃฐ ์ ์๋ค.
์ด๋ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ admin.py์์ ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ ์ฒ๋ฆฌํ ์ ์๋ค.
1. models.py ํ์ผ ์์ฑ
from django.db import models
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
pass
2. ์ฑ ์ถ๊ฐ
์ฑ์ ๋ง๋ค์์ผ๋ฉด, ํ๋ก์ ํธ์ ํด๋น ์ฑ์ ์ถ๊ฐํด ์ฃผ์ด์ผํ๋ค.
ํ๋ก์ ํธ์ settings.py์ ํด๋น ๋ถ๋ถ์ ์ฑ์ ๊ธฐ์
ํด์ฃผ์ด์ผ ํ๋ก์ ํธ์
์ฑ์ ์ถ๊ฐํ๋ค๊ณ ์ค์ ์ด ๋๋ ๊ฒ์ด๋ค.
PROJECT_APPS = [
"users", "survey_user"
]
INSTALLED_APPS = INSTALLED_APPS + PROJECT_APPS
3. ๋ํดํธ ์ ์ ๋ชจ๋ธ ๋ฎ์ด์ฐ๊ธฐ(override)
์ฅ๊ณ ์์๋ AUTH_USER_MODEL์ ์ค์ ๊ฐ์ ์ ๊ณตํจ์ผ๋ก์จ ๋ํดํธ ์ ์ ๋ชจ๋ธ์
๋ฎ์ด์ธ ์ ์๋ค.
์๋์ ๊ฐ์ด ์ฌ์ฉํ์ฌ ๋ง๋ค์ด๋ ์ ์ ๋ชจ๋ธ๋ก ๋ฎ์ด์์ฐ๋๋ก ํ๋ค.
AUTH_USER_MODEL = "users.User"
1. admin.py ํ์ผ ์์ฑ
from django.contrib import admin
from django.contrib.auth.admin import UserAdmin
from . import models
# Register your models here.
@admin.register(models.User)
class CustomUsearAdmin(UserAdmin):
pass
์ด๋๋ฏผ ํ์ด์ง์ ํด๋น ์ฑ์ ๋ด์ฉ์ ์ด๋ป๊ฒ ๋ณด์ฌ์ค ๊ฒ์ธ์ง ๋ง๋ค์ด์ ธ ์๋
ํด๋์ค UserAdmin์ importํด์ admin ํจ๋ ํ์ ๊ตฌ์ฑํ๋ค.
์ด๋, ๋ฐ์ฝ๋ ์ดํฐ (@admin.register(models.User))๋ฅผ ์ด์ฉํ์ฌ ์ด๋๋ฏผ ํ์ด์ง์ ํด๋น ์ฑ์ ์๋ ค์ค ์ ์๋ค.
admin page ํ์ธํ๊ธฐ
1. models.py๊ฐ ์์ฑ์ด ๋๋ฉด,
python manage.py makemigrations ๋ช
๋ น์ด๋ฅผ ํตํด ๋ณ๊ฒฝ์ฌํญ์ ๋ํ
migrate๋ฅผ ๋ง๋ค์ด์ฃผ๊ณ ,
python manage.py migrate ๋ช
๋ น์ด๋ฅผ ํตํด migrate๋ฅผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ฉ์ํจ๋ค.
@ ์ด migrate๋ช
๋ น์ INSTALLED_APPS์ค์ ์ ํ์ธํ๊ณ mysite/settings.pyํ์ผ์
๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์ ๋ฐ ์ฑ๊ณผ ํจ๊ป ์ ๊ณต๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ง์ด๊ทธ๋ ์ด์
์ ๋ฐ๋ผ
ํ์ํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ํ
์ด๋ธ์ ๋ง๋ญ๋๋ค.
2. python manage.py createsuperuser ๋ช
๋ น์ด๋ฅผ ํตํด ๊ด๋ฆฌ์ ๊ณ์ ์ ์์ฑํ ์ ์๋ค.
3. python manage.py runserver ๋ช
๋ น์ด๋ฅผ ํตํด ๋ก์ปฌ ์๋ฒ๋ฅผ ์ด ์ ์๋ค.
์ด ๋ช
๋ น์ ๋ด๋ถ IP ์ 8000๋ฒ ํฌํธ๋ก ๊ฐ๋ฐ ์๋ฒ๋ฅผ ๋์ด๋ค.
config์์ urls.py๋ฅผ ์ดํด๋ณด๋ฉด ์๋ ์ฌ์ง๊ณผ ๊ฐ์ด
url ๊ฒฝ๋ก๊ฐ ๋์จ๋ค.
์ด url ๊ฒฝ๋ก๋ admin page์ ๊ฒฝ๋ก์ด๋ฉฐ,
์ ์ฌ์ง๊ณผ ๊ฐ์ด Username๊ณผ Password๋ฅผ ์ ๋ ฅํ๋ ํ๋ฉด์ด ๋์ค๊ฒ ๋๋ค.
์ด ๊ณณ์ ์์ ์ด ์ค์ ํ admin ๊ณ์ ์ ์ ๋ ฅํ๋ฉด ์๋์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด,
admin ๊ณ์ ์ผ๋ก ์ ์ํ ๊ฒ์ ํ์ธํ ์ ์๋ค.
๊ด๋ฆฌ์ ํ์ด์ง๋ก ๋ค์ด๊ฐ ์ ์๋ค.