from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
app.run()
์ง๊ธ์ route๋ก ๋ฑ๋กํ URL์ด "/" ํ๋ ๋ฐ์ ์์ง๋ง, route์ ๋ฑ๋กํ URL์ด ์์ญ๊ฐ๋ผ๋ฉด..?
๐ฅฐ ^^ ์ฝ์ง์์ง ^^ ๐ฅฐ ๊ทธ๋์ blueprint๊ฐ ํ์ํด...!
1) API๋ค์ ๋ถ๋ฅ/๊ด๋ฆฌํด์ฃผ๋ ๊ฒ
2) Flask์ ๊ธฐ๋ฅ์ด ์ ์ ๋์ด๋ ์๋ก, ์ฝ๋์ ์๋ ์ฆ๊ฐํ๋ค.
3) ์ด๋, Blueprint๋ฅผ ์ฌ์ฉํด์ ๊ธธ์ด์ง ์ฝ๋๋ฅผ ๋ชจ๋ํํด์ฃผ์ด ์์ ๊ฐ๋ฐ๊ณผ ์ ์ง๋ณด์์ ์ฉ์ดํ๊ฒ ์ฝ๋๋ฅผ ๊ด๋ฆฌํ ์ ์์.
4) ํ ํ์ผ์์ (app.py) ์ฌ๋ฌ ํ์ผ๋ก ์์ฑํจ !
# ๋จผ์ ๊ธฐ์กด app.py์ blueprint๋ฅผ ์ฐ๊ฒฐ์์ผ์ค์ผํจ!
# app.py
from flask import Flask
import blue # blue.py ์ํฌํธํด์์ฃผ๊ณ
app = Flask(__name__)
# blue.py์ bp ๊ฐ์ฒด๋ฅผ app ๊ฐ์ฒด์ ์ ์ฉ (blueprint๋ฅผ ๋ฑ๋กํด์ค๋ค๊ณ ์๊ฐํ๋ฉด๋จ)
app.register_blueprint(blue.bp)
@app.route('/')
def hello_world():
return 'Hello, World!'
app.run()
Blueprint๋ฅผ ํตํด, ํ๋ผ์คํฌ ์น ์ดํ๋ฆฌ์ผ์ด์ ์ฝ๋๋ฅผ ๋ชจ๋๋ณ๋ก ๊ตฌ์กฐํํ์ฌ ๋๋ ์ ์์ ๊ฒ์ด๋ค. Blueprint์ URL Prefix ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ฉด ๊ฝค ํธ๋ฆฌํ๋ค.
# blue.py
from flask import Blueprint
bp = Blueprint('blue', __name__, url_prefix='/blue')
# ์ด๋ฆ ์ ์ธ
@bp.route("/1")
def print_blue():
return "hello Blue! :)"
@bp.route("/2")
def print_blue2():
return "hello Blue!2 :)"
#์ด์ ๋ธ๋ฃจํ๋ฆฐํธ๋ฅผ ์ ์ธํ ๋, URL prefix๋ฅผ ์ค์ ํด๋๋ฉด ์๋์ ์์ฑ๋๋ ๋ชจ๋ URL์ ์์ ๋ฏธ๋ฆฌ ์ค์ ๋ prefix ๋ฌธ์์ด์ด ๋ถ์ ์ฑ๋ก ์ ์ธ๋จ!
๐ ์ค์ ํค์๋
@app.route ์ฌ์ฉํด์ url ์์ฑ
render_template ์ฌ์ฉํด์ HTML ํ์ผ ์ฐ๊ฒฐ
jsonify๋ก json ํ์ ๋ฐ์ดํฐ ์ ์ก
GET์ request.args.get(~), POST๋ request.form[~]
Blueprint๋ก ์ฝ๋ ๋ชจ๋ํ! ์ ์ง๋ณด์ good!
jinja ํ
ํ๋ฆฟ์ผ๋ก html ๋ด์์ python๋ฌธ๋ฒ์ฒ๋ผ ๋ฐ์ดํฐ ๋ค๋ฃจ๊ธฐ ๊ฐ๋ฅ
!!!!!!
1-1) __name__?
ํ์ด์ฌ์ .py ํ์ผ์๋ ์จ๊ฒจ์ ธ ์๋ ๋ณ์: __name__.
์ด ๋ณ์๋ ํด๋น ๋ชจ๋์ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์๋ ๋ณ์.
์ฆ, ์ง๊ธ py ํ์ผ์ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์๋ ๋ณ์๋ผ๋ ๊ฒ.
example.py ๋ฉด example์ด๋ผ๋ ๋ฌธ์์ด์ __name__ ๋ณ์๊ฐ ๊ฐ์ง๊ณ ์๊ฒ ๋๋ ๊ฒ.
1-2) __name__, __main__?
__name__์๋ ๋ชจ๋์ ์ด๋ฆ์ด ๋ค์ด๊ฐ๋๋ฐ ๋ค์ด๊ฐ๊ธฐ๋ ํ๊ณ ์๋๊ธฐ๋ ํจ.
์๋๋ฉด, ๋ฉ์ธ์ผ๋ก ์ง์ ์คํํ ํ์ผ์ ๊ฒฝ์ฐ์๋ __name__์ ํ์ผ ์ด๋ฆ์ด ์๋ "__main__" ์ด๋ผ๋ ๋ฌธ์์ด์ด ๋ค์ด๊ฐ๊ฒ ๋๋ค. ๋ฉ์ธ์ผ๋ก ์ง์ ์คํํ ํ์ผ์ด๋ผ๋ ๊ฒ์ ๊ตฌ๋ถํ๊ธฐ ์ํด์.
first.py, second.py ๊ฐ ์๋ค๊ณ ํ ๋
first.py์์ second.py๋ฅผ import ํด์ ์ฌ์ฉํ๊ณ ,
second.py์์๋ first.py๋ฅผ import ํด์ ์ฌ์ฉํ๋ค๊ณ ํ์ ๋
๊ฐ์๋ฅผ import ํ๋ค๊ณ ๊ฐ์ ํ๋ฉด,
first.py ๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ก๊ทธ๋จ์ ์คํ -
first.py์ __name__์ "__main__" ์ด๊ณ , second.py์ __name__์ "second"๊ฐ ๋ค์ด๊ฐ๊ฒ ๋จ!
๋ฐ๋๋ก second.py๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋ก๊ทธ๋จ์ ์คํ -
first.py์ __name__์ "first" ์ด๊ณ , second.py์ __name__์ "__main__"์ด ๋จ!
1-3) ์ ๋ฆฌํ๋ฉด,
์ง์ ์คํ๋ ํ์ผ __name__ == "__main__"
์ํฌํธ ๋ผ์ ๋ชจ๋๋ก ์ฌ์ฉ๋ .py ํ์ผ __name__ == "๋ชจ๋์ด๋ฆ"
**๊ผญ** ์์์ผ ํ ๊ฒ์ ๋ ๊ฐ์ง!
(1) ํ์ผ์ด ์ํฌํธ ๋ ๋ ํด๋น ํ์ผ์ด ์คํ์ด ๋๋ ๊ฒ๊ณผ ๋์ผํ๋ค.
(print ํจ์ ๊ฐ์ ๊ฑฐ ๋ฐ๋ก ์ถ๋ ฅ๋จ)
(2) ๋ฉ์ธ์ผ๋ก ์คํํ ํ์ผ์ __name__์๋ "__main__"์ด ๋ค์ด๊ฐ๋ค.
์ฐธ๊ณ 1: https://velog.io/@suhyun-guri/Flask-Flask-%EA%B8%B0%EC%B4%88
์ฐธ๊ณ 2: https://blog.naver.com/shino1025/221239549339
์ฐธ๊ณ 3: https://blockdmask.tistory.com/545