25 Fri
TIL
[ํ๋ก๊ทธ๋๋จธ์ค AI ์ค์ฟจ 1๊ธฐ] 4์ฃผ์ฐจ DAY 3
django I - What is
Flask์๋ ๋๋ค๋ฅธ ์น ํ๋ ์์ํฌ ์ฅ๊ณ . Python ๊ธฐ๋ฐ ์น ํ๋ ์์ํฌ์ด๋ฉฐ Pinterest๋ Instagram์ ์ฅ๊ณ ๋ก ๋ง๋ค์ด์ง.
flask vs django
๋ฐฉํฅ์ฑ์ด ๋ค๋ฅด๋ค.
flask : micro๋ผ๋ ๋ง์ด ๋ง์ด ๋ถ๋๋ค. ์ต์ํ์ ๋ฒ ์ด์ค์์ ์กฐ๊ธ์ฉ ์ฑ์๋๊ฐ๋ค. ์์ ํ๋ก์ ํธ์ ์ ํฉ.
django : ๋ชจ๋ ๊ฒ์ด ๋ด์ฅ๋์ด ์๋ค. ํฐ ํ๋ก์ ํธ์ ์ ํฉ.
๊ฐ์ํ๊ฒฝ ์ค์นํ๊ธฐ
virtualenv venv
.\venv\Scripts\activate.bat
pip install django
django-admin startproject webproj
cd webproj
python manage.py runserver
http://127.0.0.1:8000/
๋ก ์ด๋ ํ ์๋ ํ๋ฉด์ด ๋จ๋ฉด ์ฑ๊ณต์ ์ผ๋ก ์๋ฃ
django ๊ตฌ์ฑ์์
manage.py : ์ฅ๊ณ ๋ฅผ ์คํํ๋ ํ์ผ์ด๋ฉฐ ์ค์ ๋ก๋ python - manage.py - runserver์ ์์๋ฅผ ํตํด ์คํ๋๋ค.
__init__.py : python ๋ชจ๋๋ก์จ ์ธ์๋๊ฒ ํ๋ ํ์ผ
asgi.py, wsgi.py : ์ฅ๊ณ ์์ ์๋ฒ๋ฅผ ์ด์ฉํ ๋ ๋ค๋ฃจ๋ ํ์ผ
settings.py : ์ ๋ฐ์ ์ธ ์ฅ๊ณ ํ๋ก์ ํธ์ ์ค์ ํ์ผ์ ๋ฐ์
secret key
debug = True : python ํ๋ก์ ํธ๋ฅผ ๋๋ฒ๊น ๋ชจ๋๋ก ์คํ ๊ฐ๋ฅ
allowed_hosts : ์ด๋ ํ ์ฃผ์์ ๋ํด์ ์ฅ๊ณ ํ๋ก์ ํธ๊ฐ ์ ๊ทผ ๊ฐ๋ฅ
installed_apps :์ฅ๊ณ ํ๋ก์ ํธ๋ ์ฌ๋ฌ ์ฑ์ผ๋ก ์ด๋ฃจ์ด์ ธ์๋ค. ์ค์น๋ ์ฑ ๋ชฉ๋ก
middle_ware
root_urlconf : url๊ด๋ฆฌ๋ฅผ ์ด๋ค ๋ชจ๋์์ ์งํํ ๊ฒ์ธ์ง
templates : ์ค์ ๋ณด๋ ํ๋ฉด์ ๊ดํ ์์๋ค์ด ๋ด๊ฒจ์์
wegi_application : python์์์ ์น์๋ฒ์ ์ํตํ ๋ ํ์ํ ์ดํ๋ฆฌ์ผ์ด์ ์ ๋ด๋น
databases : ํ๋ก์ ํธ ์์์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๋นํ ๊ณณ. default๋ sqlite3
auth_password_validation : ๊ด๋ฆฌ์๊ฐ ํจ์ค์๋๋ฅผ ๊ด๋ฆฌํ๋ ๊ณณ
language_code
time_zone
use_i18n
use_l10n
use_tz
static_url : css, js, images ๋ฑ์ ์ ์ ํ์ผ๋ค์ ์ด๋ ํด๋์ ๋ด์๋์ง ๊ฒฐ์
=> setting๋ง ๋ด๋ ํ๋ผ์คํฌ๋ณด๋ค ๋ง์ ๊ธฐ๋ฅ์ ๊ฐ์ง๊ณ ์์์ ์ ์ ์๋ค. ๊ธฐ๋ฅ์ ์ ์ ํ๊ฒ ํ์ฉํ๋ฉด ์ ๋ง ๋น ๋ฅด๊ฒ ์น์ฌ์ดํธ๋ฅผ ๊ตฌ์ถํ ์ ์๋ค.
urls.py : url์ ๊ด๋ฆฌ
urlpatterns : path('a', b) => 'a' ๋ผ๋ ์์ฒญ์ด ๋ค์ด์ค๋ฉด ์ด์ ๋ํ ์๋ต์ b์์ ๋ด๋นํ๋ค.
django Project and App
ํ๋ก์ ํธ๋ ์ฌ๋ฌ๊ฐ์ง ์ฑ์ผ๋ก ๊ตฌ์ฑ๋๋ค. ์ฑ์ ํน์ ๋ทฐ๋ ํ ํ๋ฆฟ์ ๋ชจ์.
ex) ์คํฌ์ธ ์ฑ, ๋ธ๋ก๊ทธ ์ฑ ๋ฑ
django App ๋ง๋ค๊ธฐ
์ด์ ๊ณผ๋ ๋ค๋ฅด๊ฒ ์์ ํด๋์์ ํธ์ถํ๋ ๊ฒ์ด ์๋ ํด๋น ํด๋์์ ํธ์ถํด์ผ ํ๋ค.
django-admin startapp homepage
__init__.py
: python ๋ชจ๋๋ก์จ ์ธ์๋๊ฒ ํ๋ ํ์ผ
admin.py
: admin ํ์ด์ง์ ๊ดํ ๋ถ
apps__init__.py
: ์ฑ์ ๋ํ ์ค์ ์ ๊ด
models.py
: ํํ์ด์ง ๋ชจ๋์์ ์ฐ์ผ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์คํค๋ง๋ฅผ ํด๋์ค ํํ๋ก ์
tests.py
: ํ
์คํธ ์ผ์ด์ค ์ค๋ช
views.py
: ๋ทฐ ๊ด
django์ MVT Pattern
๋์์ธ ํจํด : ์ฝ๋์ ๋ชจ๋ํ๋ฅผ ์ด์ฉํด์ ๊ฐ ์ฝ๋๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ๋์ํด์ ์ ๊ธฐ์ ์ผ๋ก ์ํ๋ ๋ชฉํ๋ฅผ ๋ฌ์ฑํ ์ ์๊ฒ ํ๋ ๊ตฌ์กฐ
์ฅ๊ณ ๋ MVT ํจํด์ ์ฑํํ๋ค. Model View Template. MVC(Controller)๋ฅผ ๋ฐํ์ผ๋ก ์ฅ๊ณ ๋ง์ ๋์์ธ ํจํด ์ฑํ. ์ ์ ๊ฐ ๋ฆฌํ์คํธ๋ฅผ ๋ณด๋ด๋ฉด ์ฅ๊ณ (์๋ฒ)๋ URL(urls,py)์ ์ฒดํฌํ์ฌ ์ด๋ค ๊ฒฝ๋ก๋ก ์์ฒญ์ด ์๋์ง ํ์ ํ๊ณ View(views.py)์์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ค. ์ด ๋ DB๋ฅผ ๊ด๋ฆฌ ๋ฐ ์ํต์ Model์์ ๋ด๋นํ๋ค. ์ฅ๊ณ ๋ DB๋ฅผ ORM ๋ฐฉ์์ผ๋ก ๊ด๋ฆฌํ๋ค. Object Relational Mapping. ์ฟผ๋ฆฌ๋ฅผ ํตํด DB์ CRUD ์ ๊ทผ ๊ฐ๋ฅ. ์น ํ์ด์ง๋ ์น ๋ฌธ์๋ฅผ ๋ณด์ฌ์ฃผ๋ ์์ฒญ์ Template์์ ๊ด๋ฆฌํ๋ฉฐ .html ํ์ผ ๋ฑ์ผ๋ก ์ ๋ฌํด์ค ์ ์๋ค. ์ด ๋ template ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก html์ ๋ก์ง์ด๋ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ํ์๋ ํ ์ ์์ง๋ง template์ธ์ด๋ฅผ ์ฌ์ฉํ๋ฉด html์ ๋ก์ง์ ์ถ๊ฐํ๋ ํ์๋ฅผ ํ ์ ์๋ค.
django II - View
View๋ก Request Handling ํ๊ธฐ
View๋ model๊ณผ ์ํตํ๊ธฐ๋ ํ๊ณ template๊ณผ ์ํตํ๊ธฐ๋ ํ๋ค. View๋ ์ฅ๊ณ ์์ ์ค์ถ์ ์ธ ์ญํ ์ ๋ด๋นํ๋๋ฐ, url์ด ์ ์ก๋๋ฉด url์ ์์ฒญ์ ์ค์ ๋ก ์ฒ๋ฆฌํ๋ ๊ณณ.
views.py
urls.py
setting.py
1. ์ฌ์ฉ์๊ฐ http://127.0.0.1:8000 ์ ์์ฒญ์ ๋ณด๋ธ๋ค.
2. urls.py์์ urlpatterns์ ์ฐธ์กฐํ์ฌ ํด๋น url์ ๋ํ ์ฒ๋ฆฌ ๋ก์ง์ด ์๋์ง ํ์ธํ๋ค.
3. ์ด ํ views.py์์ index ํจ๋ฅผ ์คํํ๋ค.
ํด๋น ์ฃผ์๋ก ์ ๊ทผํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ์ด์ง๊ฐ ์ด๋ฆฐ๋ค.
python manage.py createsuperuser
์ด๊ธฐ์๋ ์ค๋ฅ๊ฐ ๋๋ค. ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋ํ migration์ด ์งํ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ.
python manage.py migrate
default๋ก ๋ง๋ค์ด์ง ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๋ณด๊ฐ ๋ฐ์๋๋ค. ์ฅ๊ณ ํ๋ก์ ํธ์ ๋๋น ์ ๋ณด๊ฐ ์ ์ฐ๋๋ ๊ฒ์ด๋ฉฐ ์ด ๋ ๊ด๋ฆฌ์ ๊ณ์ ์ ๋ง๋ค ์ ์๋ค.
์ดํ ๋ง๋ ๊ด๋ฆฌ์ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ ํ๋ฉด ๋ค์๊ณผ ๊ฐ์ ํ์ด์ง๊ฐ ์ด๋ฆฐ๋ค.
์ด๋ฅผ flask์์ ์งํํ๋ฉด ์ง์ ๊ด๋ฆฌ์ ํ์ด์ง๋ฅผ ๋ง๋ค์ด์ผ ๋์ง๋ง, django๋ default template๋ฅผ ์ ๊ณตํ๋ค. ์ด๋ฏธ authentication ๊ธฐ๋ฅ์ ์ ๊ณตํ์์.
django III - Template
view๋ฅผ ํตํด html, css, javascript๋ฅผ ๋ณด์ฌ์ค ์ ์๋๋ฐ ์ด ๋ template๋ฅผ ์ฌ์ฉํ๋ค.
์ ์ฒ๋ผ html ํ๊ทธ๋ฅผ ๊ฐ์ด ์ ๋ ฅํด์ ์ถ๋ ฅํ ์ ์๋ค. ์ด ๋ ์๋นํ ๋ง์ ๋์ ์๋ต์ ํ๊ธฐ์๋ ์ด๋ ค์ด ๋ถ๋ถ์ด ์์ผ๋ฏ๋ก render๋ฅผ ์ฌ์ฉํ๋ค.
views.py
ํด๋น request๋ฅผ ๋ฐ์ index.html๋ก ๋ ๋๋ง ํ๋ฉฐ {}์ ์ถ๊ฐ ๊ธฐ๋ฅ์ ํ๋ค๋ ๋ป
rendering์ ์ด๋ค ๋ด์ฉ์ ๋ณด์ฌ์ค๋ค๋ ์๋ฏธ๋ณด๋ค๋ ์ด๋ ํ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ์ผ๋ก ํด๋น html์ ์์ฑํ๋ค๋ ์๋ฏธ์ด๋ค.
index.html
setting.py
views.py
index.html
{{ }} ๋ ํ ํ๋ฆฟ ์ธ์ด ์ฌ์ฉ์ ํ ์ ์๊ฒํ๋ค.
|, ํ์ดํ๋ผ์ธ์ ํํฐ๋ง์ ์๋ฏธํ๋ค.
{{ my_name | length }}
: ๊ธธ์ด๋ฅผ ์ถ๋ ฅ
{{ my_name | upper }}
: ๋ชจ๋ ๋๋ฌธ์๋ก ์ถ๋ ฅ
ํํฐ๋ง ์ข ๋ฅ๋ ๊ต์ฅํ ๋ง์ผ๋ฉฐ ๋คํ๋จผํธ๋ฅผ ์ฐธ์กฐ.
for๋ฌธ ํ๊ทธ์ if๋ฌธ ํ๊ทธ
views.py
index.html
Last updated
Was this helpful?