Gallery
Search
ํ์ฌ๊น์ง ๋ฏธ๋ ํ๋ก์ ํธ์์ DB์ insert, read ๊ธฐ๋ฅ๋ง ๊ตฌํํ์ง๋ง ์ด๋ฒ์ update๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค.
์ ๊ท ๋ฒ์ ์ ์
๋ฐ์ดํธ ๋ด์ฉ์ ๋ค์๊ณผ ๊ฐ๋ค.
โข
NEWย RELEASE

๋ถ๋ถ ์ฝ๋๋ ์๋ ๋
ธํธ์ ๊ธฐ๋กํ์ง๋ง ์ ์ฒด ์ฝ๋๋ ๋ค์๊ณผ ๊ฐ๋ค.
app.py
๋๋ณด๊ธฐ
index.html
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project bucket) 09 (v1.1 ์
๋ฐ์ดํธ ๊ธฐ๋ฅ ์ถ๊ฐ ๋ฐ ๋ฐฐํฌ)
5์ฃผ ์ฐจ์์๋ 4์ฃผ ์ฐจ์ ๋น์ทํ Flask Framework ํ๋ก์ ํธ๋ฅผ ์งํํ๋ค.
bucket์ ๊ฒฝ์ฐ ๊ธฐ๋กํ๊ธฐ, ๋ชฉ๋ก ๋ณด๊ธฐ ๊ธฐ๋ณธ ๊ธฐ๋ฅ์ ๊ตฌํํ์ฌ ์ฌ์ค์ mars ํ๋ก์ ํธ์ ๋น์ทํ ํ๋ก์ ํธ๋ฅผ ๋น ๋ฅด๊ฒ ๋ณต์ตํ๋ ๋๋์ด์๋ค. fan ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋์ผํ ๊ธฐ๋ฅ์ผ๋ก ์์งํ ์ฃผ์ ๋ง ์กฐ๊ธ ๋ณ๊ฒฝ๋๊ณ bucket๊ณผ ๋์ผํ๊ฒ ์งํ๋๋ ๊ฐ์๋ฅผ ๋ณด๊ณ ๋๋ ์ถ๊ฐ์ ์ผ๋ก DB ์ฐ๊ฒฐ๊ณผ create, read ๊ธฐ๋ฅ ์ธ์๋ ํ์ฌ๊น์ง ๋ฐฐ์ด ๋ค๋ฅธ ๊ธฐ๋ฅ๋ ๋ณต์ต ์ผ์ ๋ฃ์ด๋ณด๊ณ ์ถ์๋ค. ํนํ ์น ํฌ๋กค๋ง์์ ๋ด๊ฐ ์ํ๋ ํค์๋๋ก ํ์ฑ ๋ฐ์ HTML ์์ค ๋ด์ ํค์๋์ ๋ถ๋ชจ ํ๊ทธ๋ค์ ์ฐพ์๊ฐ๋ ๊ฒ์ ๊ตฌํํ์ง๋ง
keyword.parent.parent.parent์ ๊ฐ์ด ์กฐ๊ธ ์ง์ ๋ถํ ์ฝ๋๋ก ์ฐพ์๊ฐ๋ ๊ฒ ๋ง๋ ์์ง๋ ์์ฌ์ค๋ฝ๊ธด ํ๋ค. ๊ฒ์์ผ๋ก๋ ์ํ๋ ๊ฒฐ๊ณผ๋ฅผ ์ฐพ์ง ๋ชปํ๊ณ ์์ด ์คํ์ค๋ฒํ๋ก์ฐ๋ ํ๊ตญ ์ปค๋ฎค๋ํฐ์ ์ง๋ฌธ์ ์ฌ๋ ค๋ด์ผ ํ ๊ฒ ๊ฐ๋ค.
๊ณผ์ ์์ ์๋ด๋ ๊ธฐ๋ณธ ๊ธฐ๋ฅ ์ธ์๋ ์ ํ๋ก์ ํธ๋ค์์ ๋ถ๋ถ์ ์ผ๋ก ๊ตฌํํ ๊ธฐ๋ฅ์ด์๋ ์น ํฌ๋กค๋ง์ Spotify ์ฐจํธ ์น ์ฌ์ดํธ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ๊ตฌํํ๋ค. ๋ํ Date ๊ฐ์ฒด๋ฅผ ์์ฑํด์ ํ์ฌ ๋ ์ง๋ฅผ ์ป์ด ํ๊ธฐํด์ฃผ๋ ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ค.ย 4๊ฐ ๋ฏธ๋ ํ๋ก์ ํธ๋ ์ ์ฒด์ ์ผ๋ก HTML์ CSS, JS๋ฅผ ๊ธฐ๋กํ๋๋ก ์๋ด๋์์ง๋ง, Java์ Spring framework์ ์ต์ํด์ ๊ทธ๋ฐ์ง Flask๋ ์๋ฌด๋ฆฌ ๋ฏธ๋ ํ๋ก์ ํธ๋ผ๋ CSS, JS๋ ๋ชจ๋ํ ์์ผ์ค์ผ๊ฒ ๋ค๋ ์๊ฐ์ ์ฐพ์๋ณด๊ณ static์ด๋ ํด๋๋ก ๊ตฌ๋ถํ๋ ๊ฒ๋ ๋ชจ๋ ์ ์ฉํ๊ฒ ๋์๋ค.
5์ฃผ์ฐจ์์ ๊ฐ์ฅ ์ค์ํ ๋ถ๋ถ์ "๋ฐฐํฌ"์๋ค. ์ด์ ๊ตญ๋น๊ต์ก์ ํตํด์๋ Spring ํ๋ก์ ํธ๋ฅผ ์๋ฃํ์์ด๋ ๋ง์ง๋ง์ ํ๋ก์ ํธ ํจํค์ง์ผ๋ก jar ํ์ผ๋ก ์์ถํ๋ ๊ฒ ์ธ์ ์ค์ง์ ์ผ๋ก ์น์์ ๋ฐฐํฌํ๋ ๊ณผ์ ์ ๋ฐฐ์ฐ์ง ๋ชปํด์ ์์ฌ์ ์๊ณ , ์ด๋ฒ ์น๊ฐ๋ฐ ์ข
ํฉ๋ฐ์ ํตํด์ ๋ง์ง๋ง์ ํด๋น ๋ถ๋ถ์ด ์์ด ์์ฃผ ํฐ ๊ฐ์ด๋๊ฐ ๋์๋ค. ํ์ง๋ง AWS์ Elastic Beanstalk๋ก ๋ฐฐํฌํ๋ ๊ฒ์ ์๊ฐ๋ณด๋ค ๋๋ฌด ๊ฐ๋จํ๊ฒ ์ข
๋ฃ๋์๋ค. ๋ฌด์ธ๊ฐ ๋ด๊ฐ ์๊ฐํ๋ ์๋ฒ์ ํ๋์ค๋ฌ์ด ์ง์์ด ๋ค์ด์๋ค๊ธฐ๋ณด๋ค๋ AWS์ ์๋ํ ์์คํ
์ ๊ทธ์ ํด๋ ๊ตฌ์กฐ๋ฅผ ๋ง์ถ๊ณ ํ๋ก์ ํธ ๋ฉ์ด๋ฆฌ๋ฅผ ๋จ์ํ ๋งก๊ฒจ๋ฒ๋ฆฐ ๋๋์ด์๋ค.
๋ฌด์ธ๊ฐ ๋ถ์กฑํ๋ค. ๋๋ ์๋ง์กด์ด ํด์ฃผ๋ ์๋น์ค๊ฐ ๋์๊ฐ๋ ๋ฐฉ์ ์์ฒด๊ฐ ๊ถ๊ธํด์ก๋ค. ๊ทธ๋์ ๋ด๊ฐ ๊ฒฐ์ ํ ๊ฒ์ ๋ด๊ฐ ์์ฅํ๊ณ ์๋ Synology์ฌ์ NAS ์๋ฒ ์ฅ๋น๋ฅผ ํตํด์ AWS์ ์น ํธ์คํ
, ์ง์ ๋๋ฉ์ธ์ผ๋ก ํฌํธ ํฌ์๋ฉ ํด์ฃผ๊ณ , ํ๋ก์ ํธ ํจํค์ง๋ ์ด๋ค ํด๋ ๊ตฌ์กฐ๋กํ๊ณ . ์ด๋์ ์ ์ฅ๋๊ณ . ์ด๋ฌํ ์๋์ผ๋ก ํด์ฃผ๋ ๋ถ๋ถ๋ค์ ๋ฏ์ด๋ณด๊ธฐ ์์ํ๊ณ ๋ด๊ฐ ์น ํธ์คํ
์ ๋ด ์๋ฒ๋ก ์ง์ ํด๋ณด์ ํ๊ณ NAS์ ์ดํด๋ถํฐ ํฌํธ, DDNS, DNS, HTTP, ํ๋กํ ์ฝ ๋ฑ ์น ๊ด๋ จ ๊ธฐ๋ณธ ์ง์๋ค์ ๊ณผ์ ์ ๋ง์ถ์ด ์ถ๊ฐ์ ์ผ๋ก ์ง์์ ์ฃผ์ฌ์ฃผ์ฌ ์ฃผ์๊ฐ๋ค.
[Flask] ๋ฏธ๋ํ๋ก์ ํธ 5์ฃผ์ฐจ bucket, fan ์คํฐ๋ ํ๊ณ (WIL)
POST ์ฐ๊ฒฐ ๊ธฐ๋กํ๊ธฐ ๊ธฐ๋ฅ์ ๊ตฌํํ์ผ๋ DB์ ๋ฐ์ดํฐ๊ฐ ๋์ ๋์ดย ์ ์ฅ๋๋ค.
์ด์ ํด๋น ์น ํ์ด์ง๊ฐย ๋ก๋๋ ย ๋ DB์ ์ ์ฅ๋ ๊ธฐ๋ก๋ ์์ ๋๊ธ ๋ชฉ๋ก์ GET ๋ฐฉ์์ผ๋กย ๋ถ๋ฌ์์ content ํ๋จ ๋ฆฌ์คํธ ๋ถ๋ถ์ ๋ณด์ฌ์ฃผ๊ณ ์ย ํ๋ค.
DB์ ๋ฑ๋ก๋ ๋๋ค์, ์์ ๋๊ธ ๋ด์ฉ์ ๋ฐ์์ View ํ์ด์ง์ ๋ฃ์ด์ฃผ๋ ๊ธฐ๋ฅ์ ์์ฑํด์ผ ํ๋ค.
#### ์์ ๋๊ธ ๋ชฉ๋ก ํ์ธ
โข
DB์ ์ ์ฅ๋ ๊ธฐ๋ก๋ ์์ ๋๊ธ ๋ฐ์ดํฐ ๋ฐ๊ธฐ(find(==read))
โข
๋ฐ์ ๋ฐ์ดํฐ๋ฅผ content ๋ถ๋ถ์ ํ์ค์ฉ ์ถ๋ ฅ
1. ๋ฐ์ดํฐ ๋ช ์ธ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project fan) 08 (Backend ์์ ๋๊ธ ๋ชฉ๋ก ๋ณด๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ
ํด๋น ๊ธฐ๋ฅ ๋ชจ๋์ ๋ณธ ํ๋ก์ ํธ์ ํ์ฉํ๊ณ ์ ํ๋ค.
์ ๋ฐ์ ์ผ๋ก GET๋ฐฉ์ ์์ฒญ, ์๋ต๊ณผ ๊ฐ์ ํ๋ฆ์ด๋ค.
์ ์ฒด์ ์ธ ํด๋ผ์ด์ธํธ์ ์๋ฒ ๊ฐ์ ํ๋ฆ์ ์์ฝํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
1.
์ฐ์ ํ๋ก ํธ์์ ์น ํ์ด์ง ๋ก๋๊ฐ ๋๋ฉด (document).ready()์ ๋ฐ๋ผ
2.
๋ฐฑ์๋ ์์ฒญ์ JavaScript์ /ranking์ด๋ผ๋ URL๋ก ํด๋น ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๊ฒ ์ค๊ณํ๋ค.
3.
์ดํ ์๋ต์ app.py์์๋ /ranking ์์ฒญ์ ๋ํ ์๋ต์ ์ค๋นํ๋๋ฐ
4.
์น ํฌ๋กค๋ง์ ์์(ํ
์คํธ ์ฝ๋๋ก ์ฌ์ ์งํํจ)
5.
๋ฐ์ดํฐ๋ฅผ ์ถ์ถํ ์ดํ->์ ๋ฆฌ(๋ฆฌ์คํธํ)ํด์ฃผ๊ณ ->jsonํํ๋ก ๋ค์ JavaScript๋ก ๋ฐํ์์ผ์ค-> Promise ๋ฐ์ดํฐ๋ก ๋ณํ -> ์๋ฆฌํ์์${variable}๋ก ์ฝ๊ฒ ์ํ๋ ๊ณณ์ ์
๋ ฅ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project fan) 09 (Backend Super Shy ๋ญํน ์น ํฌ๋กค๋ง ๋ฐ ๋ณด๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ)
GET ๋ฐ POST ์ฐ๊ฒฐ ํ
์คํธ ๋ฉ์๋์ ์๋์ฌ๋ถ๊ฐ ํ์ธ๋์์ผ๋
ํด๋ผ์ด์ธํธ์์ ์
๋ ฅ๊ฐ์ ๋ฐ์ DB์ ์ ์ฅํ๋ ๊ฒ๋ถํฐ POST ๋ฐฉ์์ผ๋ก ์ฐ๊ฒฐํ๊ณ ์ ํ๋ค.
ํด๋ผ์ด์ธํธ์์๋ ๋๋ค์, ์์ ๋๊ธ ๋ด์ฉ์ ๋ฐ๊ณ
์ด ๋ฐ์ดํฐ๋ค์ DB์ ๋ฃ์ด์ฃผ๋ ๊ธฐ๋ฅ์ ์์ฑํด์ผ ํ๋ค.
#### ์์ ๋๊ธ ๊ธฐ๋ก ์งํ
โข
input,textarea์ ๊ฐ ์
๋ ฅ
โข
'๋๊ธ๋จ๊ธฐ๊ธฐ' ๋ฒํผ์ผ๋ก ์
๋ ฅ๊ฐ DB๋ก ์ ์ก ๋ฐ ์ ์ฅ (insert)
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project fan) 07 (Backend ์์ ๋๊ธ ๋ฌ๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ
์์ธ์ ์ค์๊ฐ ๋ ์จ ์ ๋ณด OpenAPI ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์์ HTML ํค๋ ๋ถ๋ถ์ ํ์ํด์ฃผ๋ ค ํ๋ค.

1. ๋ฐ์ดํฐ ๋ช ์ธ
โข
Contents :
2. ๊ธฐ๋ฅ ๊ตฌํ์ ์ํ script.js ๋ถ๋ถ ์์ ๋ฐ ์์ฑ
โข
OpenAPI ๊ธฐ๋ณธ ๊ณจ๊ฒฉ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project fan) 10 (Backend ์์ธ์ ํ์ฌ ๋ ์จ OpenAPI ๋ณด๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ)


v0.1 ํ๋ก์ ํธย ๊ฐ์ ์์ฑย ๋ฐ ํด๋ ๊ตฌ์กฐ ์์ฑ
v0.2 ๊ธฐ์ด Viewํ์ด์ง์์ฑ, ๊ธฐ์ด GET,POST ํต์ ํ
์คํธ ์๋ฃ, ์น ํฌ๋กค๋ง ๊ธฐ๋ฅ ํ
์คํธ ๋ชจ๋ ์๋ฃ



v0.2.1 POST ์์ ๋๊ธ ๊ธฐ๋กํ๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ ์๋ฃ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project fan) 11 (ํ๋ก์ ํธ ์๋ฃ ๋ฐ ํ์, ๋ฒ์ ๊ด๋ฆฌ)
๊ฐ๋ฐํ๊ณ ์ ํ๋ ํ๋ก์ ํธ์ ์๋ฒ๋ฅผ ์คํํ๊ณ ์น๋ธ๋ผ์ฐ์ ๋ก URL์ ์ ๊ทผ ํ์ ๋,
View ํ์ด์ง ๋ก๋"(document).ready()" ๋ฐ ์ด๋ฒคํธ"onclick()"์์ JavaScript ์์ฒญ์ ๋ํ ํ
์คํธ์ฉ ๋ฉ์์ง ์๋ฆผ์ฐฝ ์์ฑ์ ํ์ธํด์ผ ํ๋ค. Frontend์ ๋ณํฉํ์ฌ 1์ฐจ ํ
์คํธ๋ฅผ ์งํ

ํด๋น ๋ฐฑ์๋ ์์ฒญ ์๋ต ํ๋ฆ์ ์ด์ ํ๋ก์ ํธ์ธ project mars์ ์ ์ฌํ๋ค.
fetch()์ ์ฐ์๋ .then()์ ,ย ย jsonify(),ย res.json(), Promise์ ๋ํ ์ดํด๋ ์ project mars์์ ์ ๋ฆฌ๋์๋ค.
0. ์๋ฒ ์คํ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ์ ์๋ฒ ์คํ ํฌํธ ์ค์
โข
Flask Framework ๋ผ์ด๋ธ๋ฌ๋ฆฌ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project fan) 05 (Backend ๊ธฐ์ด ํ
์คํธ GET ์์ฒญ ๋ฐ ์๋ต)
1. ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฐ๊ฒฐ ํ์ธํ๊ธฐ(ํ ์คํธ์ฉ)
GET ๋ฐฉ์๊ณผ ๋น์ทํ์ง๋ง
์์ฒญ ํ ๋ body๋ฅผ ์ถ๊ฐํ์ฌ ์์ฒญํ๋ ๋ถ๋ถ์ด ๋ค๋ฅด๋ค.
body๋ฅผ request.form์ผ๋ก ๋ฐ๊ฒ๋๋ ๋ถ๋ถ์ด ์ถ๊ฐ๋๋ค.
โข
์ด๋ค ์ด๋ฒคํธ์ ํจ์๋ฅผ ์ฐ๊ฒฐ ํ ์ง ํ์ธ
โข
"๋๊ธ ๋จ๊ธฐ๊ธฐ" button์ onclick ์ด๋ฒคํธ๋กย JavaScript์ save_comment() ํจ์ ํธ์ถ
โข
JavaScript์ save_comment()๋ผ๋ ํจ์ ์คํ
โข
formData๋ผ๋ ๊ฐ์ฒด๋ฅผ ์์ฑ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project fan) 06 (Backend ๊ธฐ์ด ํ
์คํธ POST ์์ฒญ ๋ฐ ์๋ต)
๊ฐ๋ฐํ๊ณ ์ํ๋ ํ๋ก์ ํธ๋ย ์น ํฌ๋กค๋ง์ ์ด์ฉํ๋ค๋ ์ ์ด๋ค.
ํด๋น ๋ถ๋ถ์ ๊ธฐ๋ฅ์ ํ
์คํธ์ฉ์ผ๋ก ๋จผ์ ๊ตฌํํ๊ณ ,
๋ณธ ํ๋ก์ ํธ์ ์ฝ์
ํ ์์ ์ด๋ค.
์ค์ต ๋ด์ฉ์ ์์ง๋ง ์ค์ค๋ก ๋ณต์ต๊ฒธ ๊ตฌํํด๋ณด๊ณ ์ถ์ด์ ์ถ๊ฐํ ๊ธฐ๋ฅ์ด๋ค.
#### ์น ํฌ๋กค๋ง
โข
URL๋ก๋ถํฐ Super Shy์ ๋ฐ์ผ๋ฆฌ ๋ญํน ํฌ๋กค๋ง(soup.select_one)
1. ํ ์คํธ์ฉ URL
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project fan) 03 (์น ํฌ๋กค๋ง ๊ธฐ๋ฅ ๋ถ๋ถ ๊ตฌํ ๋ฐ ํ
์คํธ, ์ํ์ฐฉ์ค์ ํด๊ฒฐ soup.find(string), .parent ์๋ฌธ)
์๋ก์ดย ์จ๋ฒย ๋๋ฌดย ๋ฉ์ ธ์!๊ฐ๋ฐํ๊ณ ์ ํ๋ ํ๋ก์ ํธ์ View ํ์ด์ง(HTML,CSS)์ JavaScript ์ฐ๊ฒฐ ํ
์คํธ์ฉ ์์ฑ
CSS, JavaScript ๋ชจ๋ํ(Static) ๋ฐ ์ฐธ์กฐ ๋งํฌ ์ค์
1. HTML
๊ฒฝ๋ก :ย (project_root)fan/templates/index.html
Body๋ย Container(Wrap)๋ดย Headerย /ย Content /ย Footerย ๋ก ๊ตฌ๋ถ
โข
Header :
โข
Content :
โข
Footer : None
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project fan) 04 (Frontend ๊ธฐ์ด ํ
์คํธ View ํ์ด์ง ์์ฑ ๋ฐ ๋ชจ๋ํ + ํ์ฌ๋ ์ง HTML์ ํ๊ธฐ ๊ตฌํ)
1. ํ๋ก์ ํธ sparta_project/(root)pedia/ ํด๋ ์์ฑ, app.py ๋ฉ์ธ ํ์ผ ์์ฑ
2.ย Viewํ์ด์ง์ฉย (root)/templates/ ํด๋ ์์ฑ,ย ๋ฉ์ธ ๋ทฐํ์ด์ง index.html ์์ฑ
3. CSS ๋ชจ๋ํย (root)/static/css/ ํด๋ ์์ฑ, CSS์ฉ style.css ์์ฑ
4. JS ๋ชจ๋ํ (root)/static/js/ ํด๋ ์์ฑ, JS์ฉ script.js ์์ฑ

5. venv ๊ฐ์ ํ๊ฒฝ ์ค์
6. ์ธํฐํ๋ฆฌํฐ python 3.8.2 ๋ฒ์ ์ ํ ํ (venv)๊ฐ์ํ๊ฒฝ ์ ์ฉ ํฐ๋ฏธ๋ ์ด๊ธฐ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project fan) 01 (์ด๊ธฐ ํ๊ฒฝ ๊ตฌ์ถ)
(venv) ๊ฐ์ํ๊ฒฝ์ด ์ค์ ๋ ํ๋ก์ ํธ ํด๋์ ํฐ๋ฏธ๋์์ ํด๋น ํ๋ก์ ํธ์ ํ์ํ ํ๋ ์์ํฌ์ *๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์น ํ๋ค.
1๊ฐ์ฉ ๊ฐ๊ฐ ์ค์น ํ ์๋ ์์ง๋ง ๋๋ฒ์งธ ํ๋ก์ ํธ๊ธฐ ๋๋ฌธ์ ํ์ํ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ฒ์ ์ค์นํ๋ค.
์ด๋ฏธ ์ค์น๋ ๊ฒ๋ค๊น์ง ํ๋ฒ ๋ ํ์ธํด์ค๋ค.
๊ฐ ์ค์น ํจํค์ง๋ ๋ค์๊ณผ ๊ฐ๋ค.
1. Flask frameworkย ์ค์น
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project fan) 02 (ํ๋ ์์ํฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น)
# Flask_project_fan
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project fan)
##ย
ย ํ๋ก์ ํธย ์๊ฐ
๋ด์ง์ค ์์ด๋ ๊ทธ๋ฃน์ ์์๋๊ธ์ ๊ธฐ๋กํ๋ ํฌ์ฌ์ดํธ ์ปจ์
์ ๊ฐ๋จํ ๋ฉ๋ชจ ๊ฒ์ํ ํํ์ ์น ํ์ด์ง ์๋น์ค
##ย
ย ๊ฐ๋ฐย ๊ธฐ๊ฐ
โข
23.07.16์ผ - 23.07.18์ผ
###ย
ย ๋งด๋ฒ๊ตฌ์ฑ
-ย ๊น์ธ์ฉย -ย ์ฑ๊ธย ํ๋ก์ ํธ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project fan) 00 (๊ฐ์)
06๋ฒ ๊ธ์์ POST ์ฐ๊ฒฐ ๊ธฐ๋กํ๊ธฐ ๊ธฐ๋ฅ์ ๊ตฌํํ์ผ๋ DB์ ๋ฐ์ดํฐ๊ฐ ๋์ ๋์ดย ์ ์ฅ๋๋ค.
์ด์ ํด๋น ์น ํ์ด์ง๊ฐย ๋ก๋๋ ย ๋ DB์ ์ ์ฅ๋ ๊ธฐ๋ก๋ ๋ฒํท ๋ฆฌ์คํธ ๋ชฉ๋ก์ GET ๋ฐฉ์์ผ๋กย ๋ถ๋ฌ์์ content ํ๋จ ๋ถ๋ถ์ ๋ณด์ฌ์ฃผ๊ณ ์ย ํ๋ค.
DB์ ๋ฑ๋ก๋ ๋ฒํท ๋ฆฌ์คํธ ๋ด์ฉ์ ๋ฐ์์ View ํ์ด์ง์ ๋ฃ์ด์ฃผ๋ ๊ธฐ๋ฅ์ ์์ฑํด์ผ ํ๋ค.
#### ๋ฒํท๋ฆฌ์คํธ ๋ชฉ๋ก ํ์ธ
โข
DB์ย ์ ์ฅ๋ย ๊ธฐ๋ก๋ย ๋ฒํท๋ฆฌ์คํธย ๋ฐ์ดํฐย ๋ฐ๊ธฐ(find(==read))
โข
๋ฐ์ ๋ฐ์ดํฐ๋ฅผ content ํ๋จ ๋ถ๋ถ์ ํ์ค์ฉ ์ถ๋ ฅ
1. ๋ฐ์ดํฐ ๋ช ์ธ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project bucket) 07 (Backend ๋ฒํท๋ฆฌ์คํธ ๋ชฉ๋ก ๋ณด๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ
GET ๋ฐ POST ์ฐ๊ฒฐ ํ
์คํธ ๋ฉ์๋์ ์๋์ฌ๋ถ๊ฐ ํ์ธ๋์๋ค.
ํด๋ผ์ด์ธํธ์์ ์
๋ ฅ๊ฐ์ ๋ฐ์ DB์ ์ ์ฅํ๋ ๊ฒ๋ถํฐ *POST ๋ฐฉ์์ผ๋ก ์ฐ๊ฒฐํ๊ณ ์ ํ๋ค.
ํด๋ผ์ด์ธํธ์์๋ "๋ฒํท๋ฆฌ์คํธ ๋ฉ๋ชจ" ๋ด์ฉ์ ๋ฐ๊ณ
์ด ๋ฐ์ดํฐ๋ค์ DB์ ๋ฃ์ด์ฃผ๋ ๊ธฐ๋ฅ์ ์์ฑํด์ผ ํ๋ค.
#### ๋ฒํท๋ฆฌ์คํธ ๊ธฐ๋ก ์งํ
โข
input๋ฐ์ค์ย ํ
์คํธย ์
๋ ฅ
โข
'๊ธฐ๋กํ๊ธฐ' ๋ฒํผ์ผ๋ก ์
๋ ฅ๊ฐ DB๋ก ์ ์ก ๋ฐ ์ ์ฅ (insert)
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project bucket) 06 (Backend ๋ฒํท๋ฆฌ์คํธ ๊ธฐ๋กํ๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ / DB์ค๊ณ, DB์ฐ๊ฒฐ, POST ์์ฒญ ๋ฐ ์๋ต, insert)



v0.1 ํ๋ก์ ํธย ๊ฐ์ ์์ฑย ๋ฐ ํด๋ ๊ตฌ์กฐ ์์ฑ
v0.2 Frontend ๊ธฐ์ด๋ทฐํ์ด์ง์๋ฃ

v0.3 Backend ์๋ฒ ์์ฑ ๋ฐ ๊ธฐ์ด GET,POST ํต์ ํ
์คํธ ๋ณํฉ

[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project bucket) 08 (ํ๋ก์ ํธ ์๋ฃ ๋ฐ ํ์, ๋ฒ์ ๊ด๋ฆฌ)
โข
๋ฐฐ์ด์ :
โข
์ด๋ ค์ด ์ :
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project bucket) 10 ํ๋ก์ ํธ ํ๊ณ ๋ฐฐ์ด์ , ์ด๋ ค์ ๋์
3์ฃผ๊ฐ ๋ฐฐ์ ๋ python๊ณผ mongodb, ์น ํฌ๋กค๋ง ๊ธฐ๋ฅ ๋ฑ์ ํฉ์น๊ณ , ์์ฉํ๋ฉด์ ์ฃผ์ ๊ฐ์๋ ์์ ๊ฒ์ํ ๋ฐฉ์์ ์น ํ์ด์ง๋ฅผ ๋ง๋ค๊ฒ ๋๋ค.
์์ฑ๋ ํ๋ก์ ํธ๋ฅผ ๊ฒ์ผ๋ก ๋ณด๋ฉด ์์งํ โ๋ถ์กฑ"ํ๋ค๊ณ ๋๋ ์ ์๋๋ฐ, ์คํ๋ ค ๋๋ ๋ฐ๋๋ก ๋๋ฌด ์ค์ํ๋ค๊ณ ์๊ฐํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ค์ํ ์๊ฐ์ด ๋์๋ค. Java๋ก ๋ณผ ๋ ์์ฃผ ๋ณต์กํด๋ณด์๋๋ฐ ํ๋ฒ ๋ด์๊ทธ๋ฐ๊ฑด์ง, Python์ผ๋ก ๊ตฌํํ๋๊ฒ ๊ธ๋ฐฉ ๋๋ ๊ฒ์ธ์ง ๋ชจ๋ฅด๊ฒ ๋ค. ํ์คํ ๊ฐ๋จํ ๋ฏธ๋ ํ์ด์ง ์ ๋๋ Python์ผ๋ก๋ ๊ธ๋ฐฉ ๋ง๋ค ์ ์์๋ค.
ํนํ ๋์ถฉ ์๊ณ ์๋ ์ฝ๋์ ํ๋ฆ์ ํ์ค ํ์ค์ฉ ์ด๋ํ๋ฉด์ ๊ฐ์ฅ ์ค์ํ ์์ฒญ, ์๋ต, ๋ฐ์ดํฐ ํ๋ฆ์ ํ์
ํ๋๋ฐ ์์ฃผ ํฐ ๋์์ด ๋์๋ค. ๋ํ ์ค์ ์ฝ๋๋ฅผ ์์ฑ ํ ๋์ ์์, ์ด๋ค ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์์ผ ํ๋์ง ์๋ฌธํด์ผ ํ๋ ํ์ด๋ฐ, ์ด๋ค ์ํ ์ฝ๋๋ฅผ ์ฌ์ฉํด์ผํ๋์ง ๋ฑ๋ฑ ๋ณต์กํ๊ณ ํ๋ คํ ์ฝ๋๋ค๋ณด๋ค ์ง๊ด์ ์ผ๋ก ์ค์ํ ํ๋ฆ์ ๋ฐฐ์ธ ์ ์์๋ค.
์ฐ์ ์ ์ผ๋ก ์ค์ค๋ก ์ฝ๋ ๋ฆฌ๋ทฐ๋ฅผ ํตํด ๋ฐ์ดํฐ ํ๋ฆ์ ๋ฐ๋ฅธ ์ฝ๋ ์์ฑ์ ์๋ํด๋ณด๊ธฐ ํ์ผ๋ฉฐ ์์
ํ๋ฆ์ ๋ฐ๋ฅธ ์์ฑ๋ฒ์ ์๋ํด๋ณด๊ธฐ๋ ํ๋ค.
[Flask] ๋ฏธ๋ํ๋ก์ ํธ 4์ฃผ์ฐจ mars, pedia ์คํฐ๋ ํ๊ณ (WIL)
ํด๋น ๋ฐฑ์๋ ์์ฒญ ์๋ต ํ๋ฆ์ ์ด์ ํ๋ก์ ํธ์ธ project mars์ ์ ์ฌํ๋ค.
1. ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฐ๊ฒฐ ํ์ธํ๊ธฐ(ํ ์คํธ์ฉ)
GET ๋ฐฉ์๊ณผ ๋น์ทํ์ง๋ง
์์ฒญ ํ ๋ body๋ฅผ ์ถ๊ฐํ์ฌ ์์ฒญํ๋ ๋ถ๋ถ์ด ๋ค๋ฅด๋ค.
body๋ฅผ request.form์ผ๋ก ๋ฐ๊ฒ๋๋ ๋ถ๋ถ์ด ์ถ๊ฐ๋๋ค.
โข
์ด๋ค ์ด๋ฒคํธ์ ํจ์๋ฅผ ์ฐ๊ฒฐ ํ ์ง ํ์ธ
โข
"๊ธฐ๋กํ๊ธฐ" button์ onclick ์ด๋ฒคํธ๋กย JavaScript์ save_bucket() ํจ์ ํธ์ถ
โข
JavaScript์ย save_bucket()๋ผ๋ ํจ์ ์คํ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project bucket) 05 (Backend ๊ธฐ์ด ํ
์คํธ POST ์์ฒญ ๋ฐ ์๋ต)
1. ํ๋ก์ ํธ sparta_project/(root)bucket/ ํด๋ ์์ฑ, app.py ๋ฉ์ธ ํ์ผ ์์ฑ
2.ย Viewํ์ด์ง์ฉย (root)/templates/ ํด๋ ์์ฑ,ย ๋ฉ์ธ ๋ทฐํ์ด์ง index.html ์์ฑ
3. CSS ๋ชจ๋ํย (root)/static/css/ ํด๋ ์์ฑ, CSS์ฉ style.css ์์ฑ
4. JS ๋ชจ๋ํ (root)/static/js/ ํด๋ ์์ฑ, JS์ฉ script.js ์์ฑ

5. venv ๊ฐ์ ํ๊ฒฝ ์ค์
6. ์ธํฐํ๋ฆฌํฐ python 3.8.2 ๋ฒ์ ์ ํ ํ (venv)๊ฐ์ํ๊ฒฝ ์ ์ฉ ํฐ๋ฏธ๋ ์ด๊ธฐ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project bucket) 01 (์ด๊ธฐ ํ๊ฒฝ ๊ตฌ์ถ)
(venv) ๊ฐ์ํ๊ฒฝ์ด ์ค์ ๋ ํ๋ก์ ํธ ํด๋์ ํฐ๋ฏธ๋์์ ํด๋น ํ๋ก์ ํธ์ ํ์ํ ํ๋ ์์ํฌ์ *๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์น ํ๋ค.
1๊ฐ์ฉ ๊ฐ๊ฐ ์ค์น ํ ์๋ ์์ง๋ง ๋๋ฒ์งธ ํ๋ก์ ํธ๊ธฐ ๋๋ฌธ์ ํ์ํ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ฒ์ ์ค์นํ๋ค.
์ด๋ฏธ ์ค์น๋ ๊ฒ๋ค๊น์ง ํ๋ฒ ๋ ํ์ธํด์ค๋ค.
๊ฐ ์ค์น ํจํค์ง๋ ๋ค์๊ณผ ๊ฐ๋ค.
1. Flask frameworkย ์ค์น
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project bucket) 02 (ํ๋ ์์ํฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น)
๊ฐ๋ฐํ๊ณ ์ ํ๋ ํ๋ก์ ํธ์ View ํ์ด์ง(HTML,CSS)์ JavaScript ์ฐ๊ฒฐ ํ
์คํธ์ฉ ์์ฑ
CSS, JavaScript ๋ชจ๋ํ(Static) ๋ฐ ์ฐธ์กฐ ๋งํฌ ์ค์
1. HTML
๊ฒฝ๋ก :ย (project_root)bucket/templates/index.html
Body๋ย Headerย /ย Contentย ๋ก ๊ตฌ๋ถ
โข
Header :ย ํ์ดํ(title), ๋ฐฑ๊ทธ๋ผ์ด๋ ์ด๋ฏธ์ง
โข
Content :
โข
Footer :ย None
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project bucket) 03 (Frontend ๊ธฐ์ด ํ
์คํธ View ํ์ด์ง ์์ฑ ๋ฐ ๋ชจ๋ํ)
Tistory๋ก ๋ถํฐ ์ฎ๊ฒจ์ก์ต๋๋ค. ํด๋น ํ๋ก์ ํธ ์งํ TIL๋ ์๋ ๋งํฌ๋ฅผ ํตํด ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
#ย Flask_project_bucket
[Flask]ย Flaskย frameworkย ๋ฏธ๋ํ๋ก์ ํธ(projectย bucket)
##ย
ย ํ๋ก์ ํธย ์๊ฐ
๋ฒํท๋ฆฌ์คํธ๋ฅผย ๊ธฐ๋กํ๋ย ์ปจ์
์ย ๊ฐ๋จํย ๋ฉ๋ชจย ๊ฒ์ํย ํํ์ย ๊ฒ์๊ธ์ย ๋ฑ๋กํ๋ย ์นย ํ์ด์งย ์๋น์ค
##ย
ย ๊ฐ๋ฐย ๊ธฐ๊ฐ
โข
23.07.14์ผย -ย 23.07.16์ผ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project bucket) 00 (๊ฐ์)
๊ฐ๋ฐํ๊ณ ์ ํ๋ ํ๋ก์ ํธ์ ์๋ฒ๋ฅผ ์คํํ๊ณ ์น๋ธ๋ผ์ฐ์ ๋ก URL์ ์ ๊ทผ ํ์ ๋,
View ํ์ด์ง ๋ก๋"(document).ready()" ๋ฐ ์ด๋ฒคํธ"onclick()"์์ JavaScript ์์ฒญ์ ๋ํ ํ
์คํธ์ฉ ๋ฉ์์ง ์๋ฆผ์ฐฝ ์์ฑ์ ํ์ธํด์ผ ํ๋ค. Frontend์ ๋ณํฉํ์ฌ 1์ฐจ ํ
์คํธ๋ฅผ ์งํ

ํด๋น ๋ฐฑ์๋ ์์ฒญ ์๋ต ํ๋ฆ์ ์ด์ ํ๋ก์ ํธ์ธ project mars์ ์ ์ฌํ๋ค.
fetch()์ ์ฐ์๋ .then()์ ,ย ย jsonify(),ย res.json(), Promise์ ๋ํ ์ดํด๋ ์ project mars์์ ์ ๋ฆฌ๋์๋ค.
0. ์๋ฒ ์คํ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ์ ์๋ฒ ์คํ ํฌํธ ์ค์
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project bucket) 04 (Backend ๊ธฐ์ด ํ
์คํธ GET ์์ฒญ ๋ฐ ์๋ต)
โข
๋ฐฐ์ด์ :
โข
์ด๋ ค์ด ์ :
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project mars) 09 ํ๋ก์ ํธ ํ๊ณ ๋ฐฐ์ด์ , ์ด๋ ค์ ๋์



v0.1 ํ๋ก์ ํธย ๊ฐ์ ์์ฑย ๋ฐ ํด๋ ๊ตฌ์กฐ ์์ฑ
v0.2 ์นํฌ๋กค๋ง ๊ธฐ๋ฅ ๊ตฌํ์ฉ ํ
์คํธ ๋ชจ๋ ์์ฑ ๋ฐ ํ
์คํธ

v0.3.1 ๊ธฐ์ด ํ๋ก ํธ์๋ ํด๋ผ์ด์ธํธ ํ๋กํ ํ์
View ํ์ด์ง์์ฑ

[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project pedia) 09 (ํ๋ก์ ํธ ์๋ฃ ๋ฐ ํ์, ๋ฒ์ ๊ด๋ฆฌ)
โข
๋ฐฐ์ด์ :
โข
์ด๋ ค์ด ์ :
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project pedia) 10 ํ๋ก์ ํธ ํ๊ณ ๋ฐฐ์ด์ , ์ด๋ ค์ ๋์
07๋ฒ ๊ธ์์ POST ์ฐ๊ฒฐ ๊ธฐ๋กํ๊ธฐ ๊ธฐ๋ฅ์ ๊ตฌํํ์ผ๋ DB์ ๋ฐ์ดํฐ๊ฐ ๋์ ๋์ด ์ ์ฅ๋๋ค.
์ด์ ํด๋น ์น ํ์ด์ง๊ฐ ๋ก๋๋ ๋ DB์ ์ ์ฅ๋ ๊ธฐ๋ก๋ ๋ฆฌ๋ทฐ ๋ชฉ๋ก์ GET ๋ฐฉ์์ผ๋กย ๋ถ๋ฌ์์ content ๋ถ๋ถ์ ๋ณด์ฌ์ฃผ๊ณ ์ย ํ๋ค.
DB์ ๋ฑ๋ก๋ ๋ฆฌ๋ทฐ ์ํ์ ์ฌ์ง(url์ ํตํด ์ด๋ฏธ์ง๋ก), ์ํ ์ ๋ชฉ, ์ํ ์ค๋ช
, ๋ณ์ , ๋ฆฌ๋ทฐ ๋ด์ฉ์ ๋ฐ์์ View ํ์ด์ง์ ๋ฃ์ด์ฃผ๋ ๊ธฐ๋ฅ์ ์์ฑํด์ผ ํ๋ค.
#### ๋ฆฌ๋ทฐ๋ชฉ๋กํ์ธ
โข
DB์ ์ ์ฅ๋ ๊ธฐ๋ก๋ ๋ฆฌ๋ทฐ ๋ฐ์ดํฐ ๋ฐ๊ธฐ(find(==read))
โข
๋ฐ์ ๋ฐ์ดํฐ๋ฅผ content ํ๋จ ๋ถ๋ถ์ 4์ด ์นด๋ ํํ๋ก ์ถ๋ ฅ
1. ๋ฐ์ดํฐ ๋ช ์ธ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project pedia) 08 (Backend ๋ฆฌ๋ทฐ ๋ชฉ๋ก ๋ณด๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ
GET ๋ฐ POST ์ฐ๊ฒฐ ํ
์คํธ ๋ฉ์๋์ ์๋์ฌ๋ถ๊ฐ ํ์ธ๋์์ผ๋
ํด๋ผ์ด์ธํธ์์ ์
๋ ฅ๊ฐ์ ๋ฐ์ DB์ ์ ์ฅํ๋ ๊ฒ๋ถํฐ POST ๋ฐฉ์์ผ๋ก ์ฐ๊ฒฐํ๊ณ ์ ํ๋ค.
ํด๋ผ์ด์ธํธ์์๋ URL, ๋ณ์ , ๋ฆฌ๋ทฐ ๋ด์ฉ์ ๋ฐ๊ณ
์ URL์ ํตํด์ ์ํ์ ์ ๋ชฉ, ์ค๋ช
, ์ด๋ฏธ์ง URL์ ๋ฐ๊ฒ ๋๋ค.
์ด ๋ฐ์ดํฐ๋ค์ DB์ ๋ฃ์ด์ฃผ๋ ๊ธฐ๋ฅ์ ์์ฑํด์ผ ํ๋ค.
#### ์ํ ๋ฆฌ๋ทฐ ๊ธฐ๋ก ์งํ
โข
๋์ ์ํ URL, ๋ณ์ , ๋ฆฌ๋ทฐ ์ฝ๋ฉํธ ์
๋ ฅ
โข
'๊ธฐ๋กํ๊ธฐ' ๋ฒํผ์ผ๋ก ์
๋ ฅ๊ฐ+ํฌ๋กค๋ง ๋ฐ์ดํฐ DB๋ก ์ ์ก ๋ฐ ์ ์ฅ (insert)
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project pedia) 07 (Backend ๋ฆฌ๋ทฐ ๊ธฐ๋กํ๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ
ํด๋น ๋ฐฑ์๋ ์์ฒญ ์๋ต ํ๋ฆ์ ์ด์ ํ๋ก์ ํธ์ธ project mars์ ์ ์ฌํ๋ค.
1. ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฐ๊ฒฐ ํ์ธํ๊ธฐ(ํ ์คํธ์ฉ)
GET ๋ฐฉ์๊ณผ ๋น์ทํ์ง๋ง
์์ฒญ ํ ๋ body๋ฅผ ์ถ๊ฐํ์ฌ ์์ฒญํ๋ ๋ถ๋ถ์ด ๋ค๋ฅด๋ค.
body๋ฅผ request.form์ผ๋ก ๋ฐ๊ฒ๋๋ ๋ถ๋ถ์ด ์ถ๊ฐ๋๋ค.
โข
์ด๋ค ์ด๋ฒคํธ์ ํจ์๋ฅผ ์ฐ๊ฒฐ ํ ์ง ํ์ธ
โข
"๊ธฐ๋กํ๊ธฐ" button์ onclick ์ด๋ฒคํธ๋กย JavaScript์ posting() ํจ์ ํธ์ถ
โข
JavaScript์ posting()๋ผ๋ ํจ์ ์คํ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project pedia) 06 (Backend ๊ธฐ์ด ํ
์คํธ POST ์์ฒญ ๋ฐ ์๋ต)
(venv) ๊ฐ์ํ๊ฒฝ์ด ์ค์ ๋ ํ๋ก์ ํธ ํด๋์ ํฐ๋ฏธ๋์์ ํด๋น ํ๋ก์ ํธ์ ํ์ํ ํ๋ ์์ํฌ์ *๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์น ํ๋ค.
1๊ฐ์ฉ ๊ฐ๊ฐ ์ค์น ํ ์๋ ์์ง๋ง ๋๋ฒ์งธ ํ๋ก์ ํธ๊ธฐ ๋๋ฌธ์ ํ์ํ ํ๋ ์์ํฌ์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ํ๋ฒ์ ์ค์นํ๋ค.
์ด๋ฏธ ์ค์น๋ ๊ฒ๋ค๊น์ง ํ๋ฒ ๋ ํ์ธํด์ค๋ค.

๊ฐ ์ค์น ํจํค์ง๋ ๋ค์๊ณผ ๊ฐ๋ค.
1. Flask frameworkย ์ค์น
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project pedia) 02 (ํ๋ ์์ํฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น)
Tistory๋ก ๋ถํฐ ์ฎ๊ฒจ์ก์ต๋๋ค. ํด๋น ํ๋ก์ ํธ ์งํ TIL๋ ์๋ ๋งํฌ๋ฅผ ํตํด ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
# Flask_project_pedia
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project pedia)
##ย
ย ํ๋ก์ ํธย ์๊ฐ
์นย ํฌ๋กค๋ง์ย ํ์ฉํย ๊ฐ๋จย ๋ฆฌ๋ทฐย ๊ฒ์ํย ํํ์ย "์ํ"ย ๋ฆฌ๋ทฐ๋ฅผย ๋ฑ๋กํ๋ย ์นย ํ์ด์งย ์๋น์ค
##ย
ย ๊ฐ๋ฐย ๊ธฐ๊ฐ
โข
23.07.12์ผ - 23.07.13์ผ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project pedia) 00 (๊ฐ์)
๊ฐ๋ฐํ๊ณ ์ํ๋ ํ๋ก์ ํธ๋ ์ด์ project mars์ ํฌ๊ฒ ๋ค๋ฅธ ๋ถ๋ถ์ด
์น ํฌ๋กค๋ง์ ์ด์ฉํ๋ค๋ ์ ์ด๋ค. ํฌ๋กค๋ง ํ ๋ *๋ฉํํ๊ทธ๋ฅผ ํ์ฉ ํ ๊ฒ์ด๋ผ์
ํด๋น ๋ถ๋ถ์ ๊ธฐ๋ฅ์ ํ
์คํธ์ฉ์ผ๋ก ๋จผ์ ๊ตฌํํ๊ณ ,
๋ณธ ํ๋ก์ ํธ์ ์ฝ์
ํ ์์ ์ด๋ค.
#### ์น ํฌ๋กค๋ง-ย URL๋ก๋ถํฐย ์ํย ์ด๋ฏธ์ง,ย ์ํย ์ ๋ชฉ,ย ์ํย ์ค๋ช
ย ํญ๋ชฉย ๋ฉํํ๊ทธย ํฌ๋กค๋ง(soup.select_one)
1. ํ ์คํธ์ฉ URL
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project pedia) 03 (์น ํฌ๋กค๋ง ๊ธฐ๋ฅ ๋ถ๋ถ ๊ตฌํ ๋ฐ ํ
์คํธ)
๊ฐ๋ฐํ๊ณ ์ ํ๋ ํ๋ก์ ํธ์ ์๋ฒ๋ฅผ ์คํํ๊ณ ์น๋ธ๋ผ์ฐ์ ๋ก URL์ ์ ๊ทผ ํ์ ๋,
View ํ์ด์ง ๋ก๋"(document).ready()" ๋ฐ ์ด๋ฒคํธ"onclick()"์์ JavaScript ์์ฒญ์ ๋ํ ํ
์คํธ์ฉ ๋ฉ์์ง ์๋ฆผ์ฐฝ ์์ฑ์ ํ์ธํด์ผ ํ๋ค. Frontend์ ๋ณํฉํ์ฌ 1์ฐจ ํ
์คํธ๋ฅผ ์งํ

ํด๋น ๋ฐฑ์๋ ์์ฒญ ์๋ต ํ๋ฆ์ ์ด์ ํ๋ก์ ํธ์ธ project mars์ ์ ์ฌํ๋ค.
fetch()์ ์ฐ์๋ .then()์ ,ย ย jsonify(),ย res.json(), Promise์ ๋ํ ์ดํด๋ ์ project mars์์ ์ ๋ฆฌ๋์๋ค.
0. ์๋ฒ ์คํ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ์ ์๋ฒ ์คํ ํฌํธ ์ค์
โข
Flask Framework ๋ผ์ด๋ธ๋ฌ๋ฆฌ
โข
request ๋ชจ๋
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project pedia) 05 (Backend ๊ธฐ์ด ํ
์คํธ GET ์์ฒญ ๋ฐ ์๋ต)
1. ํ๋ก์ ํธ sparta_project/(root)pedia/ ํด๋ ์์ฑ, app.py ๋ฉ์ธ ํ์ผ ์์ฑ
2.ย Viewํ์ด์ง์ฉย (root)/templates/ ํด๋ ์์ฑ,ย ๋ฉ์ธ ๋ทฐํ์ด์ง index.html ์์ฑ
3. CSS ๋ชจ๋ํย (root)/static/css/ ํด๋ ์์ฑ, CSS์ฉ style.css ์์ฑ
4. JS ๋ชจ๋ํ (root)/static/js/ ํด๋ ์์ฑ, JS์ฉ script.js ์์ฑ

5. venv ๊ฐ์ ํ๊ฒฝ ์ค์
6. ์ธํฐํ๋ฆฌํฐ python 3.8.2 ๋ฒ์ ์ ํ ํ (venv)๊ฐ์ํ๊ฒฝ ์ ์ฉ ํฐ๋ฏธ๋ ์ด๊ธฐ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project pedia) 01 (์ด๊ธฐ ํ๊ฒฝ ๊ตฌ์ถ)
๊ฐ๋ฐํ๊ณ ์ ํ๋ ํ๋ก์ ํธ์ View ํ์ด์ง(HTML,CSS)์ JavaScript ์ฐ๊ฒฐ ํ
์คํธ์ฉ ์์ฑ
CSS, JavaScript ๋ชจ๋ํ(Static) ๋ฐ ์ฐธ์กฐ ๋งํฌ ์ค์
1. HTML
๊ฒฝ๋ก :ย (project_root)pedia/templates/index.html
Body๋ย Headerย /ย Contentย ๋ก ๊ตฌ๋ถ
โข
Header :ย ํ์ดํ(title), ์ํ ๊ธฐ๋กํ๊ธฐ(button onclick ์ด๋ฒคํธ)
โข
Content :ย button์ ๋๋ฅด๋ฉด content๋ถ๋ถ์ ๋ฆฌ๋ทฐ๋ฅผ ๊ธฐ๋กํ๋ ์์(form) ์ด ๋ํ๋จย onclickย open_box() ํจ์ ํธ์ถ
โข
Content ํ๋จ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project pedia) 04 (Frontend ๊ธฐ์ด ํ
์คํธ View ํ์ด์ง ์์ฑ ๋ฐ ๋ชจ๋ํ)
1. ํด๋ผ์ด์ธํธ์ ์๋ฒ ์ฐ๊ฒฐ ํ์ธํ๊ธฐ(ํ ์คํธ์ฉ)
GET ๋ฐฉ์๊ณผ ๋น์ทํ์ง๋ง
์์ฒญ ํ ๋ body๋ฅผ ์ถ๊ฐํ์ฌ ์์ฒญํ๋ ๋ถ๋ถ์ด ๋ค๋ฅด๋ค.
body๋ฅผ request.form์ผ๋ก ๋ฐ๊ฒ๋๋ ๋ถ๋ถ์ด ์ถ๊ฐ๋๋ค.
โข
์ด๋ค ์ด๋ฒคํธ์ ํจ์๋ฅผ ์ฐ๊ฒฐ ํ ์ง ํ์ธ
โข
"์ฃผ๋ฌธํ๊ธฐ" button์ onclick ์ด๋ฒคํธ๋กย JavaScript์ย save_order() ํจ์ ํธ์ถ
โข
JavaScript์ save_order()๋ผ๋ ํจ์ ์คํ
โข
formData๋ผ๋ ๊ฐ์ฒด๋ฅผ ์์ฑ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project mars) 05 (Backend ๊ธฐ์ด ํ
์คํธ POST ์์ฒญ ๋ฐ ์๋ต)
GET ๋ฐ POST ์ฐ๊ฒฐ ํ
์คํธ ๋ฉ์๋์ ์๋์ฌ๋ถ๊ฐ ํ์ธ๋์์ผ๋
ํด๋ผ์ด์ธํธ์์ ์
๋ ฅ๊ฐ์ ๋ฐ์ DB์ ์ ์ฅํ๋ ๊ฒ๋ถํฐ POST ๋ฐฉ์์ผ๋ก ์ฐ๊ฒฐํ๊ณ ์ ํ๋ค.
์ฃผ๋ฌธ์์ ์ด๋ฆ, ์ฃผ์, ๋
์๋๋ฅผ ๋ฐ์์ DB์ ๋ฃ์ด์ฃผ๋ ๊ธฐ๋ฅ์ ์์ฑํด์ผ ํ๋ค.
####ย ์ฃผ๋ฌธ์งํ-ย ์ฃผ๋ฌธ์ย ์ด๋ฆ,ย ์ฃผ๋ฌธ์ย ์ฃผ์,ย ์ฃผ๋ฌธํ๊ณ ์ํ๋ย ๋
ย ์๋ย ์
๋ ฅ-ย '์ฃผ๋ฌธํ๊ธฐ'ย ๋ฒํผ์ผ๋กย ์
๋ ฅ๊ฐย DB๋กย ์ ์กย ๋ฐย ์ ์ฅย (insert)
1. ๋ฐ์ดํฐ ๋ช ์ธ
โข
DB :ย MongoDB
โข
Collection :ย mars
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project mars) 06 (Backend ์ฃผ๋ฌธํ๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ / DB์ค๊ณ, DB์ฐ๊ฒฐ, POST ์์ฒญ ๋ฐ ์๋ต, insert)
06๋ฒ ๊ธ์์ POST ์ฐ๊ฒฐ ์ฃผ๋ฌธ ๊ธฐ๋ฅ์ ๊ตฌํํ์ผ๋ DB์ ๋ฐ์ดํฐ๊ฐ ๋์ ๋์ด ์ ์ฅ ๋๋ค.
์ด์ ํด๋น ์น ํ์ด์ง๊ฐ ๋ก๋ ๋ ๋ DB์ ์ ์ฅ๋ ์ฃผ๋ฌธ ๋ชฉ๋ก์ GET ๋ฐฉ์์ผ๋กย ๋ถ๋ฌ์์ content ํ๋จ ๋ถ๋ถ์ ๋ณด์ฌ์ฃผ๊ณ ์ย ํ๋ค.
DB์ ๋ฑ๋ก๋ ์ฃผ๋ฌธ์์ ์ด๋ฆ, ์ฃผ์, ๋
์๋๋ฅผ ๋ฐ์์ View ํ์ด์ง์ ๋ฃ์ด์ฃผ๋ ๊ธฐ๋ฅ์ ์์ฑํด์ผ ํ๋ค.
#### ์ฃผ๋ฌธ๋ชฉ๋กํ์ธ
โข
DB์ย ์ ์ฅ๋ย ์ฃผ๋ฌธ๋ย ๋ฐ์ดํฐย ๋ฐ๊ธฐ(find(==read))
โข
๋ฐ์ ๋ฐ์ดํฐ๋ฅผ content ํ๋จย ๋ถ๋ถ์ ํ ํํ๋ก ์ถ๋ ฅ
1. ๋ฐ์ดํฐ ๋ช ์ธ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project mars) 07 (Backend ์ฃผ๋ฌธ ๋ชฉ๋ก ๋ณด๊ธฐ ๊ธฐ๋ฅ ๊ตฌํ)



v0.1 ํ๋ก์ ํธ ์์ฑ Frontend ๊ธฐ์ด HTML ์์ฑ

v0.2 Flask Framework GET,POST ๋ผ๋ ์์ฑ ๋ฐ ์๋ฒ ์์ฑ / Frontend ๋ธ๋ ์น ์์ฑ ์์
View ํ์ด์ง ์๋ฃ ํ ๋ณํฉ

v0.3 HTML, CSS, JS ๋ชจ๋ํ๋ก ํ๋ก์ ํธ ํด๋ ๊ตฌ์กฐ ๋ณ๊ฒฝ์ ๋ฐ๋ฅธ ๋ณํฉ ๋ฐ Backend ์ ๊ท ๋ธ๋ ์น ์์ฑ ์์
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project mars) 08 (ํ๋ก์ ํธ ์๋ฃ ๋ฐ ํ์, ๋ฒ์ ๊ด๋ฆฌ)
๊ฐ๋ฐํ๊ณ ์ ํ๋ ํ๋ก์ ํธ์ View ํ์ด์ง(HTML,CSS)์ JavaScript ์ฐ๊ฒฐ ํ
์คํธ์ฉ ์์ฑ
CSS, JavaScript ๋ชจ๋ํ(Static) ๋ฐ ์ฐธ์กฐ ๋งํฌ ์ค์
1. HTML
๊ฒฝ๋ก :ย (project_root)mars/templates/index.html
Body๋ย Headerย /ย Contentย ย ๋ก ๊ตฌ๋ถ
โข
Header :ย ๊ฐ๋จํ ํ์ดํ๊ณผ ์ฃผ๋ฌธ ๊ด๋ จ ์ค๋ช
๊ธฐ๋ก
โข
Content :
โข
Footer : None
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project mars) 03 (Frontend ๊ธฐ์ด ํ
์คํธ View ํ์ด์ง ์์ฑ ๋ฐ ๋ชจ๋ํ)
๊ฐ๋ฐํ๊ณ ์ ํ๋ ํ๋ก์ ํธ์ ์๋ฒ๋ฅผ ์คํํ๊ณ ์น๋ธ๋ผ์ฐ์ ๋ก URL์ ์ ๊ทผ ํ์ ๋,
View ํ์ด์ง ๋ก๋"(document).ready()" ๋ฐ ์ด๋ฒคํธ"onclick()"์์ JavaScript ์์ฒญ์ ๋ํ ํ
์คํธ์ฉ ๋ฉ์์ง ์๋ฆผ์ฐฝ ์์ฑ์ ํ์ธํด์ผ ํ๋ค. Frontend์ ๋ณํฉํ์ฌ 1์ฐจ ํ
์คํธ๋ฅผ ์งํ

0. ์๋ฒ ์คํ์ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ํฌํธ์ ์๋ฒ ์คํ ํฌํธ ์ค์
โข
Flask Framework ๋ผ์ด๋ธ๋ฌ๋ฆฌ
โข
request ๋ชจ๋
โข
jsonify ๋ผ์ด๋ธ๋ฌ๋ฆฌ
โข
port=5001(Mac์ด๋ผ ํฌํธ์ถฉ๋ ๋ฐฉ์ง)
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project mars) 04 (Backend ๊ธฐ์ด ํ
์คํธ GET ์์ฒญ ๋ฐ ์๋ต)
(venv) ๊ฐ์ํ๊ฒฝ์ด ์ค์ ๋ ํ๋ก์ ํธ ํด๋์ ํฐ๋ฏธ๋์์ ํด๋น ํ๋ก์ ํธ์ ํ์ํ ํ๋ ์์ํฌ์ *๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ค์น ํ๋ค.
1. Flask framework ์ค์น
Flask 2.3.2 ์ค์น ์๋ฃ

2. Python์ผ๋ก MongoDB ์ฌ์ฉํ๋ PyMongo package ์ค์น
pymongo 4.4.0 ์ค์น ์๋ฃ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project mars) 02 (ํ๋ ์์ํฌ ๋ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ค์น)
1. ํ๋ก์ ํธ ํด๋ ์์ฑ
2. app.py ๋ฉ์ธ ํ์ผ ์์ฑ
3. venv ๊ฐ์ ํ๊ฒฝ ์ค์
4. ์ธํฐํ๋ฆฌํฐ python 3.8.2 ๋ฒ์ ์ ํ ํ (venv)๊ฐ์ํ๊ฒฝ ์ ์ฉ ํฐ๋ฏธ๋ ์ด๊ธฐ
5. viewํ์ด์ง์ฉ templates ํด๋ ์์ฑ
6. ๋ฉ์ธ ๋ทฐํ์ด์ง index.html ์์ฑ
7. .gitignore๋ก ๊ฐ์ํ๊ฒฝ ์ถ์ ์ ์ธ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project mars) 01 (์ด๊ธฐ ํ๊ฒฝ ๊ตฌ์ถ)
Tistory๋ก ๋ถํฐ ์ฎ๊ฒจ์ก์ต๋๋ค. ํด๋น ํ๋ก์ ํธ ์งํ TIL๋ ์๋ ๋งํฌ๋ฅผ ํตํด ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
#ย Flask_project_mars
[Flask]ย Flaskย frameworkย ๋ฏธ๋ํ๋ก์ ํธ(projectย mars)
##ย
ย ํ๋ก์ ํธย ์๊ฐ
"ํ์ฑ๋
"์ย ์ฃผ๋ฌธํ๋ย ์ฃผ์ ๋กย ๋ง๋๋ย ์ผ์ข
์ย "Memo"ย ๊ธฐ๋ฅย ์นย ํ์ด์ง
##ย
ย ๊ฐ๋ฐย ๊ธฐ๊ฐ
โข
23.07.09์ผย -ย 23.07.10์ผ
[Flask] Flask framework ๋ฏธ๋ํ๋ก์ ํธ(project mars) 00 (๊ฐ์)