Skip to content

๐Ÿ‘€ django์˜ ๊ธฐ์ดˆ์ ์ธ ํŠœํ† ๋ฆฌ์–ผ์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๋กœ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

Notifications You must be signed in to change notification settings

cksal0805/django_practice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

5 Commits
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Django Prectice

๐Ÿฑ Django ๊ธฐ์ดˆ ์—ฐ์Šต์šฉ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ ์ž…๋‹ˆ๋‹ค

๋ชฉ์ 

์„œ๋ฒ„์ชฝ์€ ๋Š˜ Node๋ฅผ ์จ์™”๋Š”๋ฐ, Django๋ฅผ ์ž ๊น ์“ธ์ผ์ด ์ƒ๊ฒจ ์“ฐ๋Š”๊น€์— ์ •๋ฆฌํ•ด ๋‘ก๋‹ˆ๋‹ค.

๊ธฐ๋ก

  • [5/19์ผ] Django ๊ฐœ๋…๊ณผ ๊ธฐ๋ณธ์…‹ํŒ… ๋ฐ ์„œ๋ฒ„์‹คํ–‰
  • [5/20์ผ] Django ๋ชจ๋ธ๋ง

Django๋ž€ ๋ฌด์—‡์ธ๊ฐ€?

python์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋ฌด๋ฃŒ ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ”„๋ ˆ์ž„์›Œํฌ ์ž…๋‹ˆ๋‹ค. ์žฅ์ ์œผ๋กœ๋Š” ์ดˆ๋ณด์ž ๋ถ„๋“ค์ด ๋ฐฐ์šฐ๊ธฐ ์‰ฌ์šด python์œผ๋กœ ๋˜์–ด์žˆ๋‹ค๋Š” ์ ์ด๊ณ , ๋กœ๊ทธ์ธ, ํšŒ์›๊ฐ€์ž…, ์ธ์ฆ,cors๋“ฑ์˜ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ตฌํ˜„ํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์€ ์ด๋ฏธ ๋งŒ๋“ค์–ด์กŒ๋‹ค ๋ผ๋Š” ์ ์—์„œ ๊ฐœ๋ฐœ ์‹œ๊ฐ„์„ ๋‹จ์ถ• ์‹œํ‚ฌ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Django์—์„œ ๊ฐ€์ง€๊ณ  ๊ฐ€๋Š” ํŒจํ„ด

๋ณดํ†ต MVC ํŒจํ„ด์„ ๋งŽ์ด ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.(ํŠนํžˆ ๋Œ€ํ‘œ์ ์œผ๋กœ spring) ํ•˜์ง€๋งŒ Django๋Š” MVT(mobile-view-templates) ๊ธฐ๋ฐ˜ ์ž…๋‹ˆ๋‹ค.

๊ฐ€์ƒํ™˜๊ฒฝ (Virtual environment)

์žฅ๊ณ ๋Š” ๊ฐ€์ƒํ™˜๊ฒฝ์— ์„ค์น˜ํ•ด์„œ ๋…๋ฆฝ์  ํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค. ๊ฐ•์ œ๋Š” ์•„๋‹™๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ ๊ฐœ๋ฐœ์„ ์ ๊ทน ๊ถŒํ•ฉ๋‹ˆ๋‹ค. ์™œ? ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ ์„ค์น˜ํ•ด์•ผ ํ•˜๋‚˜? ์ „์—ญ์ ์ธ ๊ณต๊ฐ„์— ์„ค์น˜ํ•ด ๊ฐœ๋ฐœ์„ ์ง„ํ–‰ ํ•  ๊ฒฝ์šฐ ํ•œ ์ปดํ“จํ„ฐ์—์„œ ํ•˜๋‚˜์˜ ์žฅ๊ณ  ๋ฒ„์ „๋งŒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. a๋ฒ„์ „์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค๊ฐ€ ๋‹ค๋ฅธ ํ”„๋กœ์ ํŠธ์—์„œ c๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ํ•œ ์ปดํ“จํ„ฐ์—์„œ ํ•˜๋‚˜์˜ ์žฅ๊ณ  ๋ฒ„์ „๋งŒ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ธฐ์— ๋ฒ„์ „์—…์„ ์‹œ์ผœ์•ผ ํ•˜๋Š”๋ฐ ์ถฉ๋Œ์ด๋‚˜๊ฑฐ๋‚˜ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์ฃ .

Node.js ์™€ Django์˜ ๋น„๊ต

CRUD์— ์ง‘์ค‘๋˜์–ด์žˆ๋Š” ํ”„๋กœ์ ํŠธ๋ผ๋ฉด Django ๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ ๊ฐ™๊ณ , ์ปค์Šคํ„ฐ๋งˆ์ด์ง•์ด ๋งŽ์ด ํ•„์š”ํ•˜๋‹ค๋ฉด, Node.js๋ฅผ ์„ ํƒ ํ•  ๊ฒƒ ๊ฐ™์€๋ฐ, ๊ฐœ์ธ์ ์œผ๋กœ๋Š” js๋ฅผ ์ฃผ ์–ธ์–ด๋กœ ์“ฐ๋Š” ์ž…์žฅ์—์„œ Node.js๊ฐ€ ํŽธํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค. ์†๋„๋ฉด์—์„œ๋„ ๊ทธ๋ ‡๊ณ ์š”.

๊ฐ€์ƒํ™˜๊ฒฝ ๋ฐ ์žฅ๊ณ  ์„ค์น˜ ๋ฐ ์…‹ํŒ…

mac os ๊ธฐ์ค€ prectice_venv ์ด๋ผ๋Š” ์ด๋ฆ„์˜ ๊ฐ€์ƒํ™˜๊ฒฝ ์„ค์น˜(์ด๋ฆ„์€ ๋งˆ์Œ๋Œ€๋กœ)

python3 -m venv prectice_venv

์žฅ๊ณ  ์„ค์น˜ (๋‹น์—ฐํžˆ ํŒŒ์ด์ฌ์€ ์„ค์น˜ ๋˜์–ด์žˆ๋‹ค๋Š” ๊ฐ€์ •ํ•˜์—)

  1. ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™”
source prectice_venv/bin/activate
  1. ์žฅ๊ณ  ์„ค์น˜
pip install django~=2.0.0

๐Ÿ”ฅ ModuleNotFoundError: No module named 'pip' ๋ผ๊ณ  ๋– ์š”!!! ๐Ÿ”ฅ

๋งŒ์•ฝ ModuleNotFoundError: No module named 'pip' ๋ผ๊ณ  ๋œฌ๋‹ค๋ฉด, ์•„๋ž˜์™€ ๊ฐ™์ด ์žฅ๊ณ ๋ฅผ ์„ค์น˜ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ pip๋ฒ„์ „์ด ์ตœ์‹ ์ธ์ง€ ํ™•์ธํ•˜๊ณ  install์„ ์ง„ํ–‰

python3 -m pip install --upgrade pip

๋งŒ์•ฝ ๊ธฐ์กด์— ์„ค์น˜ํ–ˆ์—ˆ๋Š”๋ฐ ์•ˆ๋œ๋‹ค๋ฉด ์—…๊ทธ๋ ˆ์ด๋“œ ํ•˜๊ณ  ์‚ญ์ œ ํ›„ ์žฌ์„ค์น˜ ํ•˜๋Š” ๊ณผ์ •์—์„œ ๊ถŒํ•œ ๋ฌธ์ œ๋กœ pip๊ฐ€ ์‚ญ์ œ๋œ ์ƒํƒœ๋กœ ๋‚จ์•„ ์ด๋Ÿฐ ํ˜„์ƒ์ด ๋ฐœ์ƒ ํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ pypa๋ฅผ ํ†ตํ•ด pip๋ฅผ ์žฌ์„ค์น˜ ํ•ด์ค๋‹ˆ๋‹ค.

//curl์„ ์ด์šฉํ•ด ๋‹ค์šด
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

//์„ค์น˜
python get-pip.py

์„ฑ๊ณต์ ์œผ๋กœ ๋๋‹ค๋ฉด?

pip3 -V // ๋ฒ„์ „ ํ™•์ธ ๋ฒ„์ „์ด ์ž˜๋œจ๋ฉด ์„ฑ๊ณต์ ์œผ๋กœ ์„ค์น˜ ๋œ๊ฑฐ์ž„

๊ฐ„๋‹จํ•œ ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค์–ด๋ณด๊ธฐ

โœ๐Ÿป ์•„๋ž˜ ๋ชจ๋“  ์…‹ํŒ…์€ ๋ฐ˜๋“œ์‹œ ๊ฐ€์ƒํ™˜๊ฒฝ์—์„œ ์ง„ํ–‰ํ•ด์ฃผ์„ธ์š”!!!

๐Ÿ˜บ ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™” ๋ฐฉ๋ฒ• (prectice_venv์—๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ๋งŒ๋“  ๊ฐ€์ƒํ™˜๊ฒฝ ์ด๋ฆ„) mac os (shell์—์„œ) - source prectice_venv/bin/activate window (cmd์—์„œ) - prectice_venv\Scripts\activat

1. ์žฅ๊ณ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘ํ•˜๊ธฐ(๊ณจ๊ฒฉ์„ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์Šคํฌ๋ฆฝํŠธ ์‹คํ–‰)

  • mysite ๋Š” ๊ทธ๋ƒฅ ์ด๋ฆ„์ž„ ์—ฌ๋Ÿฌ๋ถ„ ๋งˆ์Œ๋Œ€๋กœ ํ•˜๋ฉด ๋จ
  • .์€ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— ๋ถˆ๋Ÿฌ์˜ค๊ฒ ๋‹ค๋Š” ์†Œ๋ฆฌ
django-admin startproject mysite .

์„ฑ๊ณต์ ์œผ๋กœ ๋งŒ๋“ค์–ด ์กŒ๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํŒŒ์ด์ฌ ํŒŒ์ผ์ด ์ƒ๊ธธ ๊ฒ๋‹ˆ๋‹ค. ์ €๋Š” backํด๋” ์•ˆ์—์„œ ์œ„์˜ ์„ค์น˜๋“ค์„ ๋ชจ๋‘ ์ง„ํ–‰ํ–ˆ์Šต๋‹ˆ๋‹ค.

.
โ”œโ”€โ”€ ๐Ÿ“‚ back
โ”œโ”€โ”€ ๐Ÿ“„ manage.py            # Django ํ”„๋กœ์ ํŠธ์™€ ๋‹ค์–‘ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ ์ƒํ˜ธ์ž‘์šฉ ํ•˜๋Š” ์ปค๋งจ๋“œ๋ผ์ธ์˜ ์œ ํ‹ธ๋ฆฌํ‹ฐ
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ __ init __.py
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ settings.py      # ์›น์‚ฌ์ดํŠธ ์„ค์ •์ด ์žˆ๋Š” ํŒŒ์ผ
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ asgi.py
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ wsgi.py
โ”‚   โ””โ”€โ”€ ๐Ÿ“„ urls.py           # urlresolver๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ผ
โ””โ”€โ”€ ...

๐Ÿ‘€ asgi, wsgi ์€ ๋ญ˜๊นŒ?

Django ์›น ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„œ๋ฒ„ ์•„ํ‚คํ…์ณ์—์„œ๋Š” Django ํ”„๋ ˆ์ž„์›Œํฌ ๋‚ด๋ถ€์˜ url๊ณผ web server๊ฐ€ ํ†ต์‹ ํ•ฉ๋‹ˆ๋‹ค.

์—ฌ๊ธฐ์„œ web server๋กœ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” Apach HTTP Server์™€ Tomcat์€ JAVA๊ธฐ๋ฐ˜์ด๋ฏ€๋กœ ํŒŒ์ด์ฌ ์ฝ”๋“œ๋ฅผ ์ฝ์„ ์ˆ˜ ์—†๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋–„๋ฌธ์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์›น์„œ๋ฒ„๋Š” ๋งค์šฐ ํ•œ์ •์ ์ž…๋‹ˆ๋‹ค.

์„ฑ๋Šฅ๋ฉด์—์„œ ๊ฒ€์ฆ๋˜์–ด์žˆ๋Š” apach์ชฝ์˜ ์›น์„œ๋ฒ„๋ฅผ ์ด์šฉํ•˜๋ฉด ์ข‹์€๋ฐ,

์ด๋•Œ ์ตœ์ ์˜ ์†”๋ฃจ์…˜์ด Apach ์žฌ๋‹จ์˜ ์›น ์„œ๋ฒ„ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ชจ๋“  ์›น ์„œ๋ฒ„์™€ Python ๊ณ„์—ด์˜ ํ”„๋ ˆ์ž„ ์›Œํฌ๊ฐ€ ํ†ต์‹ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฏธ๋“ค ์›จ์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ด๊ฒŒ ๋ฐ”๋กœ asgi,wsgi ์ž…๋‹ˆ๋‹ค.

  • asgi๋Š” web server์™€ ํ”„๋ ˆ์ž„์›Œํฌ(django) ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์—ฐ๊ฒฐํ•ด ์ฃผ๋Š” python์˜ ํ‘œ์ค€ api, wsgi์™€์˜ ์ƒ์œ„ํ˜ธํ™˜

  • wsgi๋Š” ASGI์ด์ „์˜ Python์˜ ํ‘œ์ค€ ๋น„๋™๊ธฐ ๋ฐฉ์‹ ๊ธฐ๋Šฅ์— ๊ตฌํ˜„์— ์žˆ์–ด์„œ ๋ฌธ์ œ๊ฐ€ ๋งŽ์•˜๋˜ wsgi๋ผ asgi๊ฐ€ ๋‚˜์™”๋‹ค.

์ž์„ธํ•œ ์‚ฌํ•ญ์€ ์•„๋ž˜ ๋งํฌ ์ฐธ์กฐ https://nitro04.blogspot.com/2020/01/django-python-asgi-wsgi-analysis-of.html

2. ์„ค์ •๋ณ€๊ฒฝ

  • mysite/settings.py์„ ์กฐ๊ธˆ ๊ณ ์ณ ๋ณผ๊ฒŒ์š”. ์„ค์น˜ํ•œ ์ฝ”๋“œ ์—๋””ํ„ฐ๋ฅผ ์—ด์–ด ํŒŒ์ผ์„ ์—ด์–ด์ฃผ์„ธ์š”

์‹œ๊ฐ„ ๋ฐ”๊พธ๊ธฐ

TIME_ZONE = 'UTC' -> TIME_ZONE = 'Asia/Seoul'

์ •์ ํŒŒ์ผ ๊ฒฝ๋กœ ์ถ”๊ฐ€ํ•˜๊ธฐ

STATIC_URL = '/static/' STATIC_ROOT = BASE_DIR, 'static'

ํ˜ธ์ŠคํŠธ์„ค์ •

๋””๋ฒ„๊น… ๋ชจ๋“œ์—์„œ ALLOWED_HOSTS ๋ณ€์ˆ˜๊ฐ€ ๋นˆ ๋ฆฌ์ŠคํŠธ์ผ ๊ฒฝ์šฐ ['localhost', '127.0.0.1', '[::1]'] ์˜๋ฏธ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค. ์ฆ‰, ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ์—์„œ๋งŒ ์ ‘์†์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋ฐฐํฌํ•  ๋•Œ PythonAnywhere์˜ ํ˜ธ์ŠคํŠธ ์ด๋ฆ„๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š์œผ๋ฏ€๋กœ ๋‹ค์Œ ์„ค์ •์„ ์•„๋ž˜์™€ ๊ฐ™์ด ๋ณ€๊ฒฝํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

ALLOWED_HOSTS = ['127.0.0.1', '.pythonanywhere.com']

DB์„ค์ •

๋ฐ์ดํ„ฐ ๋ฒ ์ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. python๋ถ€ํ„ฐ ์ž…๋ ฅํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. (์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด manage.py์ด ํ•„์š”)

 (prectice_venv) back$ python manage.py migratepython manage.py migrate

3. ์›น์„œ๋ฒ„ ์‹œ์ž‘ํ•˜๊ธฐ

python๋ถ€ํ„ฐ ์ž…๋ ฅํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค. (์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•ด manage.py์ด ํ•„์š”)

 (prectice_venv) back$ python manage.py runserver

๋ธŒ๋ผ์šฐ์ €์—์„œ http://127.0.0.1:8000/ ๋ฅผ ์ž…๋ ฅํ•ด ์—ด์–ด๋ณด์„ธ์š”!

Django version 3.2.3, using settings 'mysite.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CONTROL-C.
[19/May/2021 23:00:19] "GET / HTTP/1.1" 200 10697
[19/May/2021 23:00:19] "GET /static/admin/css/fonts.css HTTP/1.1" 200 423
[19/May/2021 23:00:19] "GET /static/admin/fonts/Roboto-Bold-webfont.woff HTTP/1.1" 200 86184
[19/May/2021 23:00:19] "GET /static/admin/fonts/Roboto-Regular-webfont.woff HTTP/1.1" 200 85876
[19/May/2021 23:00:19] "GET /static/admin/fonts/Roboto-Light-webfont.woff HTTP/1.1" 200 85692
Not Found: /favicon.ico

๐Ÿคฉ ์„ฑ๊ณต!

์ด๋Ÿฐ๊ฒฝ์šฐ๋Š” ์–ด๋–ป๊ฒŒํ•˜์ฃ ?

๐Ÿ”ฅ Error: That port is already in use. ์ด๋Ÿด ๊ฒฝ์šฐ port 8000๊ณผ ๊ด€๋ จ๋œ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฃฝ์ด๊ณ  ๋‹ค์‹œ ์‹คํ–‰์‹œํ‚ค๋ฉด ๋œ๋‹ค.

sudo lsof -t -i tcp:8000 | xargs kill -9

๐Ÿ”ฅ File "manage.py", line 17 from exc SyntaxError: invalid syntax python manage.py runserver์‹œ์— ์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด๋‹ค๋ฉด,

1.ํ˜„์žฌ ๊ฐ€์ƒํ™˜๊ฒฝ๋‚ด๋ถ€์—์„œ ์ง„ํ–‰ํ•˜๊ณ  ์žˆ๋Š”์ง€ ์ฒดํฌํ•œ๋‹ค.

๐Ÿ˜บ ๊ฐ€์ƒํ™˜๊ฒฝ ํ™œ์„ฑํ™” ๋ฐฉ๋ฒ• (prectice_venv์—๋Š” ์—ฌ๋Ÿฌ๋ถ„์ด ๋งŒ๋“  ๊ฐ€์ƒํ™˜๊ฒฝ ์ด๋ฆ„) mac os (shell์—์„œ) - source prectice_venv/bin/activate window (cmd์—์„œ) - prectice_venv\Scripts\activat

  1. ํ˜„์žฌ ์‚ฌ์šฉํ•˜๋Š” ํŒŒ์ด์ฌ์˜ ๋ฒ„์ „์„ ์ง€์ •ํ•ด์„œ ์‹คํ–‰ํ•œ๋‹ค.
python3 manage.py runserver

์žฅ๊ณ ๋ชจ๋ธ

ํŠน์ง•: ๊ฐ์ฒด์ง€ํ–ฅ์  ์„ค๊ณ„, ์žฅ๊ณ ์•ˆ์— ์žˆ๋Š” ๋ชจ๋ธ์€ ๊ฐ์ฒด์˜ ํŠน๋ณ„ํ•œ ์ข…๋ฅ˜, ์ด ๋ชจ๋ธ์„ ์ €์žฅํ•˜๋ฉด ๊ทธ ๋‚ด์šฉ์ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์›ํ•˜๋Š” ๊ฑธ๋กœ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋ฒˆ ๋ ˆํฌ์—์„œ๋Š” ์—ฐ์Šต์šฉ์ด๋ฏ€๋กœ SQLite(๊ธฐ๋ณธ ์žฅ๊ณ  ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์–ด๋Œ‘ํ„ฐ)๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋งŒ๋“ค๊ธฐ

์•„๋ž˜์™€ ๊ฐ™์ด ์ž…๋ ฅํ•ด์ฃผ๋ฉด ์ž๋™์œผ๋กœ ํŒŒ์ด์ฌ ํŒจํ‚ค์ง€๊ฐ€ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค. ์•ฑ์˜ ๊ธฐ๋ณธ ๋””๋ ‰ํ„ฐ๋ฆฌ ๊ตฌ์กฐ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ์ฝ”๋“œ์—๋งŒ ๋”์šฑ ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  python3 manage.py startapp blog

๊ทธ๋Ÿฌ๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ํด๋” ๊ตฌ์กฐ๋ฅผ ๋ณด์‹ค ์ˆ˜ ์žˆ์„ ๊ฒ๋‹ˆ๋‹ค.

.
โ”œโ”€โ”€ ๐Ÿ“‚ blog
โ”‚   โ””โ”€โ”€ ๐Ÿ“‚ migrations 
โ”‚     โ””โ”€โ”€  ๐Ÿ“„ __ init __.py
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ __init__.py
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ admin.py
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ models.py
โ”‚   โ”œโ”€โ”€ ๐Ÿ“„ tests.py
โ”‚   โ””โ”€โ”€ ๐Ÿ“„ views.py
โ””โ”€โ”€ 

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์ƒ์„ฑ ํ›„ ์žฅ๊ณ ์—๊ฒŒ ์‚ฌ์šฉํ•œ๋‹ค๊ณ  ์•Œ๋ ค์ฃผ๊ฒ ์Šต๋‹ˆ๋‹ค. mysite/settings.py ์—์„œ ์ˆ˜์ •ํ•ด์ฃผ๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค. INSTALLED_APPS์— ์šฐ๋ฆฌ๊ฐ€ ๋งŒ๋“  ์•ฑ์˜ ํด๋”๋„ค์ž„์„ ์ถ”๊ฐ€ํ•ด์ฃผ์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'blog', // ์—ฌ๊ธฐ ์ถ”๊ฐ€
]

๋ชจ๋ธ

model.pyํŒŒ์ผ์— ๋ชจ๋ธ์„ ์ •์˜ํ•ด๋ณด๋„๋ก ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

์ฝ”๋“œ๋Š” ๐Ÿ‘‰๐Ÿป ์ฝ”๋“œ๋กœ๋ฐ”๋กœ๊ฐ€๊ธฐ(ํด๋ฆญ) ๋˜๋Š” ์ œ ๋ ˆํŒŒ์ง€ํ† ๋ฆฌ back/blog/model.py์—์„œ ํ™•์ธํ•˜์‹œ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

  • Class๋กœ ๊ฐ์ฒด์ •์˜๋ฅผ ํ•ด์ค„ ์ˆ˜ ์žˆ๋‹ค.
  • Class ๋ชจ๋ธ์ด๋ฆ„ -> ์™€ ๊ฐ™์€ ํ˜•์‹์œผ๋กœ ๋ชจ๋ธ์ด๋ฆ„์„ ์ •์˜ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ํ•ญ์ƒ ์ฒซ ๊ธ€์ž๋Š” ๋Œ€๋ฌธ์ž ์—ฌ์•ผํ•ฉ๋‹ˆ๋‹ค.
  • models๋Š” ์žฅ๊ณ ๋ชจ๋ธ์ž„์„ ์•Œ๋ ค์คŒ -> ํ•ด๋‹น ๋ชจ๋ธ์ด DB์— ์ €์žฅ๋˜์–ด์•ผ ํ•จ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.
  • ์†์„ฑ์„ ์ •์˜ํ•˜๊ณ  ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ์•Œ๋ ค์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
title = models.CharField(max_length=200)
  • def๋กœ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ…Œ์ด๋ธ”

์žฅ๊ณ ๋ชจ๋ธ์— ์šฐ๋ฆฌ๊ฐ€ ๋ฐฉ๊ธˆ ๋ชจ๋ธ ๋งŒ๋“ค์—ˆ๊ณ , ์ˆ˜์ •ํ–ˆ๋‹ค๊ณ  ์•Œ๋ ค์ค€๋‹ค.

python3 manage.py makemigrations blog

์‹ค์ œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ถ”๊ฐ€ํ•œ๋‹ค.

python3 manage.py migrate blog

// ํ•˜๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ๋œฌ๋‹ค.
Operations to perform:
  Apply all migrations: blog
Running migrations:
  Applying blog.0001_initial... OK

About

๐Ÿ‘€ django์˜ ๊ธฐ์ดˆ์ ์ธ ํŠœํ† ๋ฆฌ์–ผ์„ ๋‹ค๋ฃจ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ฃผ๋กœ ๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages