๋ณธ ํฌ์คํ ์ ์ง๋ 11์์ ์ ๋ก๋๋์์ต๋๋ค
์ ๋ณดDB ๋ง๋ค๊ธฐ
์ฐ๋ฆฌ ํ ํ๋ก์ ํธ์๋ ์ ์ db, ๋ฆฌ๋ทฐdb, ์ ๋ณดdb ์ด 3๊ฐ์ง๊ฐ ํ์ํ๋ฐ, ๋๋ ๊ทธ ์ค์ ์ ๋ณด db๊ฐ ํ์ํ ๋ถ๋ถ์ ๋ง๋ค๊ฒ ๋์ ํ๋ฃจ์ ๊ณํ์ DB ๋ฐ์ดํฐ๋ฅผ ๊ธ์ด์์ ๋ณด๋ด๋ ๊ฒ์ผ๋ก ์์ํ๋ค. DB๊ฐ ํ์ํ๋ค๋ ๊ฑธ ๋จธ๋ฆฟ์์ผ๋ก ์๊ฐ๋ง ํ์ง ๊ธฐ๋ฅ ๊ตฌํ ๊ณํ์ ์ง๋ค๋ณด๋ ์ฐ์ DB ๋จผ์ ๋ง๋ค์ด ๋๋๊ฒ ์ฌ๋ฌ๋ชจ๋ก ํธํ ๊ฒ ๊ฐ์๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ ํ ํ๋ก์ ํธ์ ๊ธฐํ์ด ์ ๋๋ก ๋ ์ง ํ์ธ์ ํด์ผํ๊ธฐ์ ๋ชฝ๊ณ DB๋ก ๋ณด๋ผ ๋ฐ์ดํฐ ์น ํฌ๋กค๋ง๋ถํฐ ํ๋ค.
๋ ํฌํจ ๋ค๋ฅธ ํ์ ํ๋ช ๋ ๊ฐ์ ํ์ด์ง์ ๊ธฐ๋ฅ์ ๊ตฌํํ๊ฒ ๋๋ฉด์ ๊ฐ์ ๊ฐ์ ์ฌ์ดํธ์ ์น ํฌ๋กค๋ง๋ถํฐ ํด๋ณด๊ธฐ๋ก ํ๊ณ 2์๊ฐ ์ ๋ ๋ค์ ๋ค์ ๋ง๋์ ์ด์ผ๊ธฐ๋ฅผ ๋๋๊ธฐ๋ก ํ๋๋ค. ์ฐ๋ฆฌ ๋ ๋ค ๋ค๋ฅธ ๋ฐฉ๋ฒ์ผ๋ก db๋ฅผ ๋ง๋ค๊ณ ์์๋ค. ๋ฌผ๋ก ๋ ๋ค ์ธ ์ ์๋ ๋ฐฉ๋ฒ์ด์ง๋ง ๋ด๊ฐ ์๊ฐํด๋ณด์ง ๋ชปํ๋ ๋ฐฉ๋ฒ์ผ๋ก ๋ง๋๋ ๊ฑธ ๋ณด๊ณ ๋๋ฌ๋ค. ๊ทธ๋ฆฌ๊ณ ์ด๋ฐ๊ฒ!! ๋ฐ๋ก ํ ํ๋ก์ ํธ ๋ฌ๋ฏธ?! ๋ผ๋ฉฐ ใ ๋ด๊ฐ ์๊ฐ์ง ๋ชปํ ๋ถ๋ถ๋ ์๊ฐํด๋ณด๊ฒ ๋ง๋ค์ด์คฌ๋ค. ๋ ๋ค ๊ด์ฐฎ์์ง๋ง ์ข ๋ ํจ์จ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ์งํํ๊ธฐ๋ก ๊ฒฐ์ !
๋ฐ์ดํฐ ๋ถ๋ฌ์ค๊ธฐ (jinja2 ์ฌ์ฉ)
์ด์ ์ ๋ค๊ธฐ ์ ์ ์ ์ ๊ณต๋ถํ๋ python ์น ํ
ํ๋ฆฟ ์์ง์ธ jinja2๋ฅผ ์ด์ฉํด์ผํ๋ค.
๋ณต์ต์ฐจ์์์ ajax ๋ก ๋ฐ์์ค๋ ๊ฒ ๋ถํฐ ํ๋๋ฐ, ๋์ค์๋ jinja2 ์ฝ๋๋ฅผ ๋ค์ ์ ์ฉํ๋๋ฐ ์ ๋ฅผ ๋จน์๋ค.
๊ฒ์ ๊ธฐ๋ฅ ๊ตฌํ
๋ฉ์ธ ํ์ด์ง์ db์์ ๋ถ๋ฌ์จ ์ ๋ณด ์ธ๋ค์ผ ์นด๋์ ๊ฒ์์ ํด์ ์ฐพ์๋ณผ ์ ์๋ ๊ธฐ๋ฅ์ ๊ตฌํํด์ผํ๋ค.
์์งํ ์ฝ๊ฒ ์๊ฐํ๋ค. e.target.value ๋ฅผ ์จ์ ๋ฆฌ์กํธ๋, ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ช ๋ฒ ํด๋ด์ ์ฌ์ ๊ฒ์ด๋ผ๊ณ ์๊ฐํ๋ฉฐ ๋ฃฐ๋ฃจ๋๋ผํ๋๋ฐ, ์์ฒญ ์ค๋ ๊ฑธ๋ ธ๋ค! ์คํ ์๊ฐ์ ๊ทธ๋ฅ ํผ์์ ๋ค ๋ ๋ฆฐ ๊ฒฉ. ํํ
์ ๋ณด๋ฅผ ๊ฒ์ํ๋ ๋ฐ์๋ ๋ค์ํ ๋ฐฉ๋ฒ์ด ์๋๋ฐ, ๊ฒ์๋ฒํผ์ ๋๋ฌ์ผ์ง๋ง ์ฐพ๊ฒ ๋๋ ๊ฒ, ์๋๋ฉด ๊ทธ๋ฅ ํ ๊ธ์๋ผ๋ ์ฐ๋ฉด ํด๋น ์ ๋ณด๋ฅผ ์ฐพ์์ฃผ๋ ๊ฒ. ํ๋ก์ ํธ๋ฅผ ๊ธฐํํ๋ฉด์ ์ด ๋ถ๋ถ์ ๋ํด์ ๋ํ ์ผํ๊ฒ ๋ค์ด๊ฐ๋ ๊ฒ์ด ์๋๋ผ์ ์๊ฐ์ง ๋ชปํ ๋ถ๋ถ์ด์๋ค. ์ ์ ๋ฆฌ๋ทฐ ์ฌ์ดํธ๋ฅผ ๋ง๋๋ ์ฐ๋ฆฌ๋ก์จ ์์ด์ฌ์ ์์ ์๋จ์ด ์ฐพ๋ฏ์ด ์์ฑ๋ ๋จ์ด๋ฅผ ๋ง๋ค์ด์ ๊ฒ์ํ๋ ๊ฒ๋ณด๋ค๋ ํ๋ ๊ธ์๋ผ๋ ๊ฒน์น๋๊ฒ ์๋ค๋ฉด ๋ณด์ฌ์ฃผ๋ ์์ onkeyup์ ์ด ๊ฒ์๋ฐฉ์์ด ๋ ๊ด์ฐฎ์ ๊ฒ์ด๋ผ๊ณ ํ๋จํด์ ๊ตฌํํ๋ค.
์ค๋๋ง์ ์ฐ๋ jQeury ๋ฌธ๋ฒ์ด ํท๊ฐ๋ ค์ ์์ฒญ ๋ ๋์ error ๋ฉ์ธ์ง๋ค์ ๋ง๋ฌ์์ง๋ง ๊ฒฐ๊ตญ์ ๋ค ํด๋๋ค!!
๊ทธ ์ค์์๋ ์ ์ผ ์๊ฐ์ ๋ง์ด ์ก์๋จน์๋ ๊ฒ์ด ๋ฐ๋ก ์์ฑ ๊ฐ์ ์ฐพ์๋ด๋ attr() ์ด์๋ค.
์ธ๋ค์ผ์ ๋ด์ ์นด๋ div์ id๊ฐ์ผ๋ก ์ธ๋ค์ผ ํ์ดํ์ ๋ฃ์ด์คฌ๊ณ , input value๋ฅผ ๋ฃ์์ ๋, ์นด๋์ id๊ฐ๊ณผ ๋น๊ตํด์ css๋ถ๋ถ์ display ๋ถ๋ถ์ ์ค์ ํด์ฃผ๋ฉด ์์ฝ๊ฒ ๋ ๊ฑฐ๋ผ๊ณ ์๊ฐํ๋ค.
๊ทธ๋ฐ๋ฐ ๊ณ์ ์๋ฌ ๋ฉ์ธ์ง๊ฐ ๋จ๋ ๊ฒ์ด๋ค.
โattr()์ ์์(element)์ ์์ฑ(attribute)์ ๊ฐ์ ๊ฐ์ ธ์ค๊ฑฐ๋ ์ถ๊ฐ๋ฅผ ํด ์ค ๋ ์ด๋ค.
โattr() vs getAttribute()
jQuery -> console.log( $(‘#item’).attr(‘selected’) );
JavaScript -> console.log( document.getElementById(‘item’).getAttribute(‘selected’) );
attr() ๋ getAttribute()๋ ์ด์ฉ๋ฐฉ๋ฒ๊ณผ ์์ฑ์ ๋๊ฐ์๋ฐ, attr()์ ์ผ์ ๋๋ ์ํ๋ ์ ๋ณด๋ฅผ ์ป์ง ๋ชปํ๋ค. ๊ณ์ํด์ ์๋ฌ๊ฐ ๋ฌ๊ณ , ํด๊ฒฐ์ฑ ์ ์ฐพ์๋ค๋๋ค๊ฐ getAttribute()๋ก ์์ํด๋ณด์๊ณ ๋ด๊ฐ ์ฒ์์ ์๊ฐํ๋๋๋ก ๊ฐ์ ์ป์ด๋ผ ์ ์์๋ค!!
์ ์ด์ฟผ๋ฆฌ๋ฌธ๋ฒ๊ณผ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฌธ๋ฒ์์ ์ค๋ ์ฐจ์ด๋ก ์ค๋ฅ๊ฐ ๊ณ์ ๋ฌ๋๊ฒ์ด๋ค!
โญํ๊ณ
db๋ฅผ ๋ง๋ค๊ณ ๋ถ๋ฌ์ค๊ธฐ๊น์ง๋ง ํ์ ๋๋ ๋ญ๊ฐ ์์กฐ๋กญ๊ฒ ์ด๋ฃจ์ด์ ธ ๊ฐ๋ ๊ฒ ๊ฐ์์ ํํ์ด ๊ฐ์๋ ๋ณด๋ฉด์ ํด์ผ์ง๋ผ๊ณ ํ๋๋ฐ, ๊ฒ์ ๊ธฐ๋ฅ ๊ตฌํ์์ ์์ฒญ ๋ฒ๋ฒ
์ด๋ค๋ณด๋ ๊ณํํ๋ ๊ฐ์๋ฅผ ์ค๋ ์์ ๋ค ๋ณด์ง ๋ชปํ๋ค. ํํ
ํ ํ๋ก์ ํธ๋ก ์งํํ๋ค๋ณด๋ ๋ชจ๋ฅด๊ฒ ์ผ๋ฉด ๊ตฌ๊ธ๋ง๋ ํ์ง๋ง ๋ฐ๋ก ํ์์๊ฒ๋ ์๋ ์ฌ๋์ด ์๋์ง ๋ฌผ์ด๋ณด๊ณ ์์ํ๋ ์ด ์ผ๋ง๋ ์ข์๊ฐ~ ใ
ใ
ใ
ํผ์ํ๋๊ฒ ์๋๋ผ์ ์ธ๋กญ์ง๋ ์๊ณ ์ผ์ฐ์ผ์ฐํ๋ ๋ถ์๊ธฐ๊ฐ ๋๊ธฐ๋ถ์ฌ๋ ํด์ค์ ์ข์ ๊ฒ ๊ฐ๋ค. ํจ๊ปํ๋ ๊ฒ์ด์ง๋ง ์ด์จ๋ ์ฃผ์ด์ง ์๋ฌด๊ฐ ์๋ค๋ณด๋ ์ฑ
์๊ฐ๋ ๋๋๋๋๋๋ ๋ง์ด ์๊ฒจ๋๋ค.