๐Ÿ‘จโ€๐Ÿ’ป Seungineer's GitHub Contribution

๐Ÿงญ KAIST JUNGLE

[๐Ÿงญ๏ธJungle] Own project - TIL

seungineer = seungwoo + engineer 2024. 1. 14. 11:27

โ›๏ธOwn Project

URL, Memo๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, card columns ํ˜•์‹์œผ๋กœ ์ €์žฅํ–ˆ๋˜ ๋‚ด์šฉ์„ ๊ธฐ๋ณธ์ ์œผ๋กœ ํ‘œ์‹œํ•˜๋Š” ์‚ฌ์ดํŠธ.


โœ”๏ธ ๋ง‰ํžˆ๋Š” ๋ถ€๋ถ„

  1. Card Columns๋ฅผ ํ‘œ์‹œ: ์™„๋ฃŒ(Bootstrap Document์—์„œ ๊ฐ€์ ธ์˜ด(๋‹จ์ˆœ Div ํƒœ๊ทธ ํ†ตํ•œ img, title, content ํ‘œ์‹œ))
  2. ํ‘œ์‹œํ•˜๋Š” ๋‚ด์šฉ์œผ๋กœ๋Š” DB์—์„œ ์ €์žฅํ–ˆ๋˜ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•จ
    1. MongoDB? pymongo → Flask๋ฅผ ํ†ตํ•ด์„œ DB์˜ ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ →  HTML์— ํ‘œ์‹œํ•  ๋•Œ, jQuery๋ฅผ ์จ์„œ ์•Œ๋งž์€ ์ˆœ์„œ๋Œ€๋กœ Img, Title, Memo ๋ฟŒ๋ฆฌ๊ธฐ (์–ด๋–ป๊ฒŒ HTML์—์„œ DB์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๊ฑฐ์ง€?)
  3. ํ˜„์žฌ๋Š” Card Columns๋ฅผ ์ˆ˜๋™์œผ๋กœ ํ‘œ์‹œํ–ˆ์ง€๋งŒ, DB์— ์žˆ๋Š” ์ €์žฅ๋œ ์ •๋ณด์˜ ๊ฐœ์ˆ˜ ๋งŒํผ ํ‘œ์‹œํ•˜๋„๋ก ์ˆ˜์ • ํ•„์š” 

๐Ÿ’ช DB ์ปจํ…์ธ  HTML ํ†ตํ•ด ํ‘œ์‹œํ•˜๊ธฐ ์„ฑ๊ณต

  1. '๊ธฐ์‚ฌ ์ €์žฅ' ๋ฒ„ํŠผ์„ ๋ˆŒ๋Ÿฌ์„œ DB์— ์ €์žฅ๋˜๊ฒŒ ํ•˜๋Š” ๊ธฐ๋Šฅ
    1. <Button> tag์—์„œ onlclikc ์‹œ JS <scripts> tag์˜ function ์‹คํ–‰๋˜๋„๋ก ๊ตฌ์„ฑ : ์™„๋ฃŒ
    2. function์—์„œ $.Ajax๋กœ url ๋ฐ memo POST : ์˜๋ฌธ์‚ฌํ•ญ - POST ์‹œ Mongo DB ๋กœ ์ž๋ฃŒ Uplad? 
    3. ์ €์žฅ์™„๋ฃŒ ์•Œ๋ฆผ
๐Ÿ’ญ ์˜๋ฌธ์‚ฌํ•ญ - ํ•ด๊ฒฐ
'app.py' file์—์„œ pymongo๋ฅผ flask์™€ ํ•จ๊ป˜ import ํ•œ๋‹ค.
'index.html'์˜ <script> tag ๋‚ด function ์—์„œ $.ajax๋ฅผ ํ†ตํ•ด methods๋ฅผ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ(ํ˜„์žฌ์˜ ๊ฒฝ์šฐ "POST"),  url์„"/xxxx" (ํ˜„์žฌ์˜ ๊ฒฝ์šฐ "/upload")ํ˜•์‹์œผ๋กœ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.
'app.py' file์—์„œ ์ด url๊ณผ ์ผ์น˜ํ•˜๋Š” @app.route("/xxxx") ์— ์ •์˜๋œ ํ•จ์ˆ˜๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
โ–ถ๏ธ ์ฆ‰, POST ์‹œ app.py์—์„œ @app.route("/xxxx") ์— ์ •์˜๋œ ํ•จ์ˆ˜๋กœ MongoDB์— ์ž๋ฃŒ๋ฅผ Upload ํ•œ๋‹ค.

 

๐Ÿ’ช ๋ฒ„ํŠผ ํด๋ฆญ ์‹œ DB์— ์ปจํ…์ธ  ์ €์žฅํ•˜๊ธฐ ์„ฑ๊ณต

  1. Alert, Font, ์—ฌ๋ฐฑ ๋“ฑ ์„ธ๋ถ€ ์‚ฌํ•ญ ์ˆ˜์ •ํ•˜๊ธฐ

๐Ÿ’ช ์™„์ „ํžˆ ์„ฑ๊ณต


๐Ÿ’ก A-Ha

  • HTML <Body> ๋‚ด <script>  ํƒœ๊ทธ ๋‚ด ์„ ์–ธ๋˜์–ด ์žˆ๋Š” JS Code ์ค‘ ํ•œ ๊ตฐ๋ฐ์—์„œ๋ผ๋„ error ๋ฐœ์ƒ ์‹œ Script ํƒœ๊ทธ ์ „์ฒด๊ฐ€ ์‹คํ–‰๋˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ๊ฐ„์ฃผ๋˜๊ธฐ์— ์˜ค๋ฅ˜ ๋ฐœ์ƒ 

โ–ถ error ๋ฐœ์ƒ ์ง€์  ์ „์— ์„ ์–ธํ•œ function ๋˜ํ•œ ์‹คํ–‰๋˜์ง€ ์•Š๊ธฐ์— ์•„๋ž˜์™€ ๊ฐ™์€ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•จ.

 

'Uncaught Reference Error'๊ฐ€ ๋ฐœ์ƒํ•˜์˜€์œผ๋‚˜ ๋ถ„๋ช…ํžˆ ํ•ด๋‹น function์„ ์„ ์–ธํ•ด์ฃผ์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜์—ฌ, ํ•ด๊ฒฐ์ด ์•ˆ ๋˜๊ณ  ์žˆ์—ˆ๋‹ค. ๋‘ ๋ฒˆ์งธ error code์ธ 'Uncaugt SyntaxError'๋ฅผ ๋ณด๊ณ  script ํƒœ๊ทธ ๋‚ด ๋‹ค๋ฅธ code ์—๋Ÿฌ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€์œผ๋ฉฐ ์•ž์„œ ์–ธ๊ธ‰ํ•œ error๋„ ํ•ด๊ฒฐ๋˜์—ˆ๋‹ค.

 

์žฌ๋ฐœ ๋ฐฉ์ง€์ฑ