ํด๋น ์๋ฃ ๋ฐ ์ค์ต์ ๋ชจ๋ ์ํค๋
์ค(์ ํ ํฌ ํ๋ผ์คํฌ) ๋ด์ฉ์ ์ฐธ๊ณ ํ ์์ฑํ ๊ฒ์
๋๋ค.
Version
ํ์ด์ฌ ๋ฒ์ 3.10 / ํ๋ผ์คํฌ ๋ฒ์ 2.1.2 / ๋ถํธ์คํธ๋ฉ 5.1
Flask ๋?
ํ๋ผ์คํฌ(Flask)๋ 2004๋
์ค์คํธ๋ฆฌ์์ ์คํ์์ค ๊ฐ๋ฐ์ ์๋ฅด๋ฏผ ๋ก๋ํ(Armin Ronacher)๊ฐ ๋ง๋ ์น ํ๋ ์์ํฌ๋ค.
ํ๋ผ์คํฌ๋ ์๋ฅด๋ฏผ ๋ก๋ํ๊ฐ ๋ง์ฐ์ ์ ์ฅ๋์ผ์ ๋์ง ์์ด๋์ด์๋๋ฐ ์ฌ๋๋ค์ ๊ด์ฌ์ด ๋์์ ธ ์๋น์ค๋ก ๋ง๋ค์ด์ก๋ค๊ณ ํ๋ค.
ํ๋ผ์คํฌ๋ ์ฅ๊ณ (Django)์ ๋๋ถ์ด ํ์ด์ฌ ์น ํ๋ ์์ํฌ์ ์๋ ์ฐ๋งฅ์ผ๋ก ์๋ฆฌ๋งค๊นํ๊ณ ์๋ค.
ํ๊ฒฝ์ค์น
1. ํ์ด์ฌ ๋ฒ์ 3.10.4 ์ค์น
์ ์ ๊ฒฝ์ฐ conda๋ฅผ ์ฌ์ฉํ๊ณ ์์ด์ ๋ช
๋ น์ด๋ก ๋ค์ด๋ฐ์์ง๋ง, anaconda ํ๊ฒฝ์ด ์๋์๋ผ๋ฉด ์๋ ์ฃผ์๋ก ๋ค์ด๊ฐ์ ๋ค์ด๋ฐ์์ฃผ์ธ์.
> ํ์ด์ฌ ๊ณต์ ํํ์ด์ง ์ฃผ์: www.python.org
2. Flask ์ค์น
* mac์์ ๊ฐ์ ํ๊ฒฝ ์ง์
ํ๋ ๋ฐฉ๋ฒ
์ ๋ ๊ตณ์ด ๊ฐ์ ํ๊ฒฝ ๋ง๋ค์ง ์๊ณ , ๊ทธ๋ฅ conda ์ฌ์ฉํด์ ์งํํ์ต๋๋ค~
3. ํ์ด์ฐธ ์ค์นํ๊ธฐ
๋ฌด๋ฃ ๊ธฐ๊ฐ์ด ์ง๋์ ์ ๊ฐ์ ๊ฒฝ์ฐ.. ๋ค์ ๊น์์คฌ์ต๋๋ค.
์์น๋ flask_Project !
์ฌ๊ธฐ๊น์ง ๋์๋ค๋ฉด ํ์ด์ฐธ ์ธํฐํ๋ฆฌํฐ๋ฅผ ์ค์ ํด์ฃผ๋ฉด ๋ฉ๋๋ค.
์ ๊ฐ์ ๊ฒฝ์ฐ๋, anaconda๋ฅผ ์ฌ์ฉํด์ conda environment์์ ์ง์ ํด์ฃผ์์ผ๋, ๋ฐฉ๋ฒ์ ๊ฒ์ํด๋ณด์๊ธธ ๋ฐ๋๋๋ค.
(https://notstop.co.kr/409 , https://wikidocs.net/81043 <- ์ฐธ๊ณ ํ์๋ฉด ์ข์๋ฏ ํฉ๋๋ค.)
์ผ์ผ ๊ฐ์ํ๊ฒฝ์ด ์ฐ๊ฒฐ๋์์ผ๋ฉด ์ ์์ผ๋ก ๋๋ฌ๋ค๋ ๊ฒ์
๋๋ค.
ํ๋ก์ ํธ ์์ฑ
์๊น์ง ๋ชจ๋ ์๋ฃ๋์๋ค๋ฉด, ํ์ด์ฐธ ์์ ์์ ์ ํ๋ก์ ํธ ๋ด์ ํ์ผ์ ์์ฑํ๊ณ ์ค์ตํด๋ณธ๋ค.
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_pyno():
return 'hello, my name is haeun!'
app = Flask(__name__)์ ํ๋ผ์คํฌ ์ ํ๋ฆฌ์ผ์ด์
์ ์์ฑํ๋ ์ฝ๋๋ค. ์ด ์ฝ๋์์ __name__์ด๋ผ๋ ๋ณ์์๋ ๋ชจ๋๋ช
์ด ๋ด๊ธด๋ค. ์ฆ, ์ด ํ์ผ์ด ์คํ๋๋ฉด pybo.py๋ผ๋ ๋ชจ๋์ด ์คํ๋๋ ๊ฒ์ด๋ฏ๋ก __name__ ๋ณ์์๋ "pybo" ๋ผ๋ ๋ฌธ์์ด์ด ๋ด๊ธด๋ค. @app.route๋ URL๊ณผ ํ
๋ผ์คํฌ ์ฝ๋๋ฅผ ๋งคํํ๋ ํ๋ผ์คํฌ์ ๋ฐ์ฝ๋ ์ดํฐ๋ค. ์ฆ, / URL์ด ์์ฒญ๋๋ฉด ํ๋ผ์คํฌ๋ hello_pybo ํจ์๋ฅผ ์คํ์ํจ๋ค.
๋ฐ์ฝ๋ ์ดํฐ(decorator)๋ ๊ธฐ์กด ํจ์๋ฅผ ๋ณ๊ฒฝํ์ง ์๊ณ ์ถ๊ฐ ๊ธฐ๋ฅ์ ๋ง๋ถ์ผ ์ ์๋๋ก ํด์ฃผ๋ ํจ์๋ฅผ ์๋ฏธํ๋ค.
ํ๋ผ์คํฌ ์๋ฒ ์คํ
๋ก์ปฌ ์๋ฒ ์คํ์ ์ํด flask run์ ํด์ค๋ค. ์ ํ๋ฆฌ์ผ์ด์
์ ์ฐพ์ ์ ์๋ค๋ ์ค๋ฅ ๋ฐ์ ์,FLASK_APP ํ๊ฒฝ๋ณ์์ ํ๋ผ์คํฌ ์ ํ๋ฆฌ์ผ์ด์
์ ์ค์ ํด์ค๋ค.
*FLASK_APP ํ๊ฒฝ๋ณ์์ ๊ธฐ๋ณธ๊ฐํ๋ผ์คํฌ๋ FLASK_APP ํ๊ฒฝ ๋ณ์๊ฐ ์ง์ ๋์ง ์์ ๊ฒฝ์ฐ ์๋์ผ๋ก app.py๋ฅผ ๊ธฐ๋ณธ ์ดํ๋ฆฌ์ผ์ด์
์ผ๋ก ์ธ์ํ๋ค.๋ฐ๋ผ์ ์์ pybo.py ํ์ผ๋ช
์ app.py๋ก ์ง์๋ค๋ฉด FLASK.APP ํ๊ฒฝ ๋ณ์๋ฅผ ๋ณ๋๋ก ์ง์ ํ์ง ์์๋ ๋๋ค.ํ์ง๋ง FLASK_APP ํ๊ฒฝ ๋ณ์๋ฅผ ๋ณ๋๋ก ์ง์ ํ๋ ๋ฐฉ๋ฒ์ผ๋ก ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
์ ์์ ์ผ๋ก ์๋ฒ๊ฐ ์ถ๋ ฅ๋๋ ๊ฒ์ ํ์ธํ ์ ์์.
#alias์ FLASK_APP, FLASK_ENV์ถ๊ฐํ๊ธฐ