๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐ŸŒŒ | WEB DEV116

Django_์žฅ๊ณ  ๋ถ€์ˆ˜๊ธฐ (5)_ํŽ˜์ด์ง€ ์ด๋™, ์ƒ์„ธ ํŽ˜์ด์ง€ ํŽ˜์ด์ง€ ์ด๋™ ๋ธŒ๋ผ์šฐ์ €๋กœ๋ถ€ํ„ฐ request๋ฅผ ๋ฐ›๊ณ  ์ ์ ˆํ•œ url์„ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ์–ด์•ผ ํ•œ๋‹ค. urls.py) - urlํŒจํ„ด์— path๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค. path('url๊ฒฝ๋กœ', views.ํ•จ์ˆ˜๋ช…, name='ํ…œํ”Œ๋ฆฟ ํƒœ๊ทธ์— ์“ฐ์ผ ์ด๋ฆ„') ์˜ˆ์‹œ path('post_list', views.post_list, name='post_list'), 'main๋ฃจํŠธ/post_lis't๊ฐ€ url ๊ฒฝ๋กœ๊ฐ€ ๋œ๋‹ค. views.py) request ๋“ฑ์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ „๋‹ฌ ๋ฐ›์€ ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•œ ํ›„ render, redirect ๋“ฑ์˜ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ, ๋ฐ˜ํ™˜ํ•œ๋‹ค. template) ํ…œํ”Œ๋ฆฟ์—์„œ๋Š” ํ…œํ”Œ๋ฆฟ ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ํ˜ธ์ถœํ•œ๋‹ค. ๋‚ด์šฉ์€ urls.py์˜ name์— ์ •์˜๋œ ์ด๋ฆ„์„ ์ด์šฉํ•œ๋‹ค. ... ์ƒ์„ธ ํŽ˜์ด์ง€ pk(Primary Key) DB์˜ ๊ฐ ๋ ˆ์ฝ”๋“œ๋ฅผ ์‹.. 2022. 6. 30.
Django_์žฅ๊ณ  ๋ถ€์ˆ˜๊ธฐ (4)_ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ• Django ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ• template์—์„œ DB์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์•Œ์•„๋ณด์ž HTMLํŒŒ์ผ์€ ์ •์  ํŒŒ์ผ์ด๋‹ค. ๊ทธ์— ๋ฐ˜ํ•ด ํŒŒ์ด์ฌ์€ ๋™์ ์ด๋‹ค. ํ…œํ”Œ๋ฆฟ ๋ฌธ๋ฒ•์€ ํŒŒ์ด์ฌ์„ HTML๋กœ ๋ณ€ํ™˜์‹œ์ผœ, ๋น ๋ฅด๊ณ  ์‰ฝ๊ฒŒ ๋™์ ์ธ ์›น ์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ๋„์™€์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. ๋™์  ๋ฐ์ดํ„ฐ ์ €๋ฒˆ ํฌ์ŠคํŒ…์—์„œ ๋‹ค๋ฃจ์—ˆ๋˜ ์ฟผ๋ฆฌ์…‹์„ ์ด์šฉํ•˜์—ฌ views.py์—์„œ ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผํ•œ๋‹ค. ex) from django.shortcuts import render from django.utils import timezone from .models import Post def post_list(request): posts = Post.objects.filter(published_date__lte=timezone.now()).ord.. 2022. 6. 30.
Django_์žฅ๊ณ  ๋ถ€์ˆ˜๊ธฐ (3)_QuerySet Django QuerySet(์ฟผ๋ฆฌ์…‹) DB์˜ ๊ฐ์ฒด๋“ค์„ ํ…œํ”Œ๋ฆฟ์—์„œ ๋ณด์—ฌ์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์ด์šฉํ•˜๋Š” '๊ฐ์ฒด์˜ ์ง‘ํ•ฉ'์ด๋‹ค. ๊ฐ์ฒด๋“ค์— ๋Œ€ํ•˜์—ฌ ํ•„ํ„ฐ๋ง์„ ํ•˜๊ฑฐ๋‚˜ ์ •๋ ฌ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. DB(SQL)์—์„œ๋Š” row์— ํ•ด๋‹นํ•˜๊ณ , ํŒŒ์ด์ฌ ์ฝ”๋“œ๊ฐ€ SQL๋กœ ๋งคํ•‘๋˜์–ด QuerySet์ด๋ผ๋Š” ์ž๋ฃŒ ํ˜•ํƒœ๋กœ ๊ฐ’์ด ๋„˜์–ด์˜จ๋‹ค. ์žฅ๊ณ  Shell ์žฅ๊ณ  ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒ ์ฝ˜์†”(interactive console)๋ฅผ ์ด์šฉํ•˜์—ฌ ์ฟผ๋ฆฌ์…‹์— ๋Œ€ํ•œ ๊ฐ’์„ ํ™•์ธํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค. ํ•ด๋‹น ์ฝ˜์†”์—์„œ๋Š” ์žฅ๊ณ ์˜ ๋ช…๋ น์–ด์™€ ํŒŒ์ด์ฌ์˜ ๋ช…๋ น์–ด ๋“ฑ์„ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. python manage.py shell ๋จผ์ € models.py์—์„œ ์›ํ•˜๋Š” ๋ชจ๋ธ์„ ๊ฐ€์ ธ์˜จ๋‹ค. from blog.models import Post 1. ๋ชจ๋“  ๊ฐ์ฒด ๋ฐ˜ํ™˜ Post.objects.all() 2. ๊ฐ์ฒด ์ƒ์„ฑํ•˜๊ธฐ ํ•„์š”์— ๋”ฐ.. 2022. 6. 30.
Django_์žฅ๊ณ  ๋ถ€์ˆ˜๊ธฐ (2)_MVT ์ƒ์„ฑ Django Model(๋ชจ๋ธ) ๋ชจ๋ธ์€ ๊ฐ์ฒด์˜ ํŠน๋ณ„ํ•œ ์ข…๋ฅ˜์ด๊ณ , ์ด๋ฅผ ์ €์žฅํ•˜๋ฉด ๊ทธ ๋‚ด์šฉ์ด DB์— ์ €์žฅ๋œ๋‹ค. ์žฅ๊ณ ๋Š” App์˜ ์ง‘ํ•ฉ์œผ๋กœ ๋งŒ๋“ค์–ด์กŒ๋‹ค๊ณ  ํ•  ์ˆ˜์žˆ๋‹ค. ์ฆ‰, ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค์–ด์ฃผ์–ด์•ผํ•œ๋‹ค. ์–ดํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ƒ์„ฑ python manage.py startapp blog(app๋ช…) django(ํ”„๋กœ์ ํŠธ ์œ„์น˜) โ”œโ”€โ”€ mysite | __init__.py | settings.py | urls.py | wsgi.py โ”œโ”€โ”€ manage.py โ””โ”€โ”€ blog(App ๋””๋ ‰ํ† ๋ฆฌ) โ”œโ”€โ”€ migrations | __init__.py โ”œโ”€โ”€ __init__.py โ”œโ”€โ”€ admin.py โ”œโ”€โ”€ models.py โ”œโ”€โ”€ tests.py โ””โ”€โ”€ views.py ์œ„์™€ ๊ฐ™์€ ํŠธ๋ฆฌ๊ฐ€ ์™„์„ฑ์ด ๋  ๊ฒƒ์ด๋‹ค. ์ƒ์„ฑํ•œ App์— ๋Œ€ํ•˜์—ฌ ๊ผญ ํ•ด.. 2022. 6. 30.
Django_์žฅ๊ณ  ๋ถ€์ˆ˜๊ธฐ (1)_๊ธฐ์ดˆ ๋“ค์–ด๊ฐ€๋ฉฐ EAGU ๋™์•„๋ฆฌ ํ™œ๋™ ๊ทธ ์ฒซ ๋ฒˆ์งธ๋กœ '๋ธ”๋กœ๊ทธ ๋งŒ๋“ค๊ธฐ'๋ฅผ ํ•ด๋ณด๊ธฐ๋กœ ํ•˜์˜€๋‹ค ํ”„๋ ˆ์ž„์›Œํฌ๋Š” Django๋ฅผ ์ด์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋Š”๋ฐ ํšŒ์žฅ๋‹˜์„ ์ œ์™ธํ•˜๊ณ  ๋‚˜๋จธ์ง€ ๋ฉค๋ฒ„๋“ค์€ ๋ชจ๋‘ ์ฒ˜์Œ์ด๋ผ์„œ ๊ธฐ์ดˆ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์˜€๋‹ค. ํ˜„์žฌ ์žฅ๊ณ ์™€์˜ ์ฒซ ๋งŒ๋‚จ์„ ๊ฐ€์ง€๊ณ  4์ผ์ฐจ! ์ด๋ฒˆ ํฌ์ŠคํŒ…๋ถ€ํ„ฐ๋Š” ๊ณต๋ถ€ํ–ˆ๋˜ ์žฅ๊ณ ์˜ ๊ธฐ์ดˆ์™€ ์—ด์‹ฌํžˆ ๊นจ์ง€๊ณ  ๋ถ€์„œ์ง€๋ฉฐ ์–ป์€ ๊ฒƒ๋“ค์„ ์ ์–ด๋ณด๋ ค๊ณ  ํ•œ๋‹ค! Django๋ž€ ๋ฌด์—‡์ธ๊ฐ€ Django(์žฅ๊ณ )๋Š” ํŒŒ์ด์ฌ ๊ธฐ๋ฐ˜์˜ ์›น ํ”„๋ ˆ์ž„์›Œํฌ์ด๋‹ค. ์ด์ „์— Flask๋ฅผ ํ•œ ๋ฒˆ ์ฐ๋จนํ•ด๋ณธ ์ ์ด ์žˆ๋Š”๋ฐ ๊ทธ๊ฒƒ๊ณผ ํ•จ๊ป˜ ์–‘๋Œ€์‚ฐ๋งฅ๊ณผ ๊ฐ™์€ ๋А๋‚Œ์˜ ํฌ์ง€์…˜์ด๋‹ค. ๋ฐฑ์—”๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” Framework์ด๋ฏ€๋กœ ํด๋ผ์ด์–ธํŠธ์˜ request์— ๋Œ€ํ•œ ๋‹ต์žฅ๊ณผ ๊ทธ๊ฒƒ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. Django์˜ MVTํŒจํ„ด (Model View Template) ์žฅ๊ณ ๋Š” 3๊ฐ€์ง€.. 2022. 6. 30.
JS_๋ฌธ๋ฒ• (9)_์ด๋ฒคํŠธ ์›นํŽ˜์ด์ง€์— ์–ด๋– ํ•œ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ ๊ทธ์— ๋Œ€ํ•ด ์‚ฌ์šฉ์ž๊ฐ€ ์ƒํ˜ธ์ž‘์šฉ์„ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๊ฒƒ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž. ์˜ˆ์ „์—๋Š” ํƒœ๊ทธ์— ์ง์ ‘ ์†์„ฑ์œผ๋กœ ์—๋ฒคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ์‹๋„ ์žˆ์—ˆ์ง€๋งŒ, ์ตœ๊ทผ์—๋Š” JS๋ฅผ HTML๊ณผ ๋ถ„๋ฆฌํ•˜๊ธฐ์œ„ํ•ด์„œ addEventListener()๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์„ ์„ ํ˜ธํ•œ๋‹ค. ์ด๋ฒคํŠธ ๋“ฑ๋ก ๋Œ€์ƒ ์š”์†Œ.addEvenListener(์ด๋ฒคํŠธ๋ช…, ๋ฆฌ์Šค๋„ˆํ•จ์ˆ˜(์ฝœ๋ฐฑํ•จ์ˆ˜)) ์ด๋ฒคํŠธ๋ช…์€ click, intput, focus, mousehover ๋“ฑ์„ ์ด์•ผ๊ธฐํ•œ๋‹ค. ๋ฆฌ์Šค๋„ˆํ•จ์ˆ˜๋Š” ๋ง๊ทธ๋Œ€๋กœ 'ํ•จ์ˆ˜'๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ ์ธ์ˆ˜ ์ž๋ฆฌ์— ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•ด์ฃผ๊ฑฐ๋‚˜ ์ •์˜ํ•œ ํ•จ์ˆ˜์˜ ์ด๋ฆ„์„ ๋„ฃ์–ด์ค€๋‹ค. (ํ•จ์ˆ˜์˜ ์ด๋ฆ„์ด ์•„๋‹Œ "ํ•จ์ˆ˜๋ช…()"์˜ ํ˜•ํƒœ๋ฅผ ๋„ฃ์–ด์ฃผ๋ฉด ๋ฐ˜ํ™˜๊ฐ’์ด ๋“ค์–ด๊ฐ€๋ฏ€๋กœ ์ •์ƒ์ž‘๋™X) ์ด๋ฒคํŠธ ์‚ญ์ œ ๋Œ€์ƒ ์š”์†Œ.removeEvenListen.. 2022. 2. 24.
JS_๋ฌธ๋ฒ• (8)_DOM CRUD ํŒŒํ—ค์น˜๊ธฐ Create Read Update Delete HTML ์ฐพ๊ธฐ - doucument.getElementById(id๋ช…) : id๋กœ ์ฐพ๊ธฐ - doucument.getElementsByTagName(ํƒœ๊ทธ๋ช…) : ํƒœ๊ทธ๋กœ ์ฐพ๊ธฐ(๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜) - doucument.getElementsByClassName(ํด๋ž˜์Šค๋ช…) : ํด๋ž˜์Šค๋กœ ์ฐพ๊ธฐ(๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜) - document.querySelector(css ์„ ํƒ์ž) : css ์„ ํƒ์ž๋กœ ์ฐพ๊ธฐ(์ตœ์ดˆ๋“ฑ์žฅ ํ•˜๋‚˜๋งŒ ๋ฐ˜ํ™˜) - document.querySelectorAll(css ์„ ํƒ์ž) : css ์„ ํƒ์ž๋กœ ์ฐพ๊ธฐ(๋ชจ๋“  ์š”์†Œ. ๋ฐฐ์—ด ํ˜•ํƒœ์˜ ๊ฐ์ฒด(์œ ์‚ฌ๋ฐฐ์—ด)๋กœ ๋ฐ˜ํ™˜) (์ธ์ˆ˜๋กœ css ์„ ํƒ์ž๋ฅผ ์ „๋‹ฌํ•œ๋‹ค. ' . '(class), ' # '(id), ' * '(all), (tag๋Š” prefix.. 2022. 2. 24.
JS_๋ฌธ๋ฒ• (7)_DOM / BOM DOM Document Object Model์˜ ์•ฝ์ž์ด๋‹ค Document = HTML ์ „์ฒด ์ฝ”๋“œ Object = HTML ํƒœ๊ทธ DOM์€ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ ธ์™€์„œ ๋ณ€์ˆ˜์— ๋„ฃ๊ณ  ๋ณ€์ˆ˜or๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ์ถ”๊ฐ€, ๋ณ€๊ฒฝ, ์‚ญ์ œ ๋“ฑ์˜ ์ œ์–ด๋ฅผ ํ•˜๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค. (ํ•œ์ค„์š”์•ฝ) document๋ผ๋Š” ๊ฐ์ฒด๊ฐ€ ๋งŒ๋“ค์–ด์ง€๊ณ  ๊ทธ ์•ˆ์˜ ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฒƒ๋“ค์„ ์ œ์–ดํ•˜๋Š” ๊ฒƒ ์›น๋ธŒ๋ผ์šฐ์ € ๋™์ž‘ ๊ณผ์ • | 1 | HTMLํŒŒ์ผ ๊ฐ€์ ธ์˜ค๊ธฐ | 2 | ๊ฐ€์ ธ์˜จ HTMLํŒŒ์ผ์„ ํŒŒ์‹ฑํ•˜์—ฌ DOM tree ์ƒ์„ฑ (ํƒœ๊ทธ๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์—ฌ ๋ถ„์„!) CSS ์ •๋ณด ํŒŒ์‹ฑํ•˜์—ฌ CSSOM tree ์ƒ์„ฑ | 3 | DOM/CSSOM tree๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ Render tree ์ƒ์„ฑ | 4 | Render tree๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ๋ Œ๋”๋ง์„ ํ•œ๋‹ค. ์›น๋ธŒ๋ผ์šฐ์ € ๋™์ž‘๊ณผ์ • & JS ์ด๋ฒˆ์—๋Š” JS๊ฐ€ ์ฒจ๊ฐ€๋œ ๊ฒฝ์šฐ.. 2022. 2. 23.
JS_๋ฌธ๋ฒ• (6)_promise ๋ฉ”์„œ๋“œ(catch, finally, all, race ๋“ฑ ) catch ๋ฉ”์„œ๋“œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์˜ˆ์™ธ์ƒํ™ฉ์„ ์ฒ˜๋ฆฌํ•œ๋‹ค. ๋งŒ์•ฝ failCallback์ด ์ •์˜๋˜์–ด ์žˆ์ง€ ์•Š์„ ๋•Œ์—๋Š” reject ์‹œ์— catch ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ๋œ๋‹ค. (์˜ˆ์™ธ์ƒํ™ฉ์œผ๋กœ ์ธ์‹) const func = new Promise( (resolve, reject) => { //์„ฑ๊ณต, ์‹คํŒจ ํ•จ์ˆ˜์ธ์ˆ˜๋กœ ๋ฐ›๊ธฐ setTimeout(() => { //๋น„๋™๊ธฐ ํ•จ์ˆ˜ ์‹คํ–‰ let num = 10 if (num > 11) { resolve(num)//successCallback } else { reject("error")//failCallback } }, 1000); } ) func .then((item) => { //successCallback console.log('success', item) }) .catch((err) =>.. 2022. 2. 20.