๐ฅ Eager to get started? ๐ฅ
ใ
ใ
ใ
$ python3 -m venv venv
cd venv
# ๊ฐ์ํ๊ฒฝ ๊น๊ณ
$ source ./venv/bin/activate
# activate
$ pip3 install flask
# flask ๊น๊ณ
$ export
# ํ๊ฒฝ๋ณ์ ๋ณด๊ธฐ
COLORTERM=truecolor
COMMAND_MODE=unix2003
HOME=/Users/eunhye
ITERM_PROFILE=Default
ITERM_SESSION_ID=w0t0p1:42D40073-8A8C-4965-BC02-D3E979FD3A11
LANG=ko_KR.UTF-8
LC_TERMINAL=iTerm2
LC_TERMINAL_VERSION=3.4.14
LOGNAME=eunhye
OLDPWD=/Users/eunhye/desktop/venv
PATH=/Users/eunhye/Desktop/venv/bin:/Library/Frameworks/Python.framework/Versions/3.10/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
PS1='(venv) %n@%m %1~ %# '
PWD=/Users/eunhye/desktop
# ์ดใ
๋ฅด๋ฅด๋ฅด๋ฅด๋ฅผในใน....
# app.py์ ์ด๋ ๊ฒ ์์ฑํด์ฃผ๋ฉด (pycharm์ด์ฉํ๋ฉด ๊ทธ๋ฅ ์ด๊ฑฐ ์ธํ
๋จ)
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello, World!'
if __name__ == '__main__':
app.run()
$ python app.py # ์๋ฒ ์คํ
$ flask run # FLASK_APP ํ๊ฒฝ ๋ณ์๊ฐ ๊ฐ๋ฆฌํค๋ ์ค์ ์ผ๋ก ์ฑ์ด ์ด๋์ ์์นํด ์๋์ง ์๊ฒ ๋๋ค.
๐ฆ ์กฐ๊ธ ๋ฏ์ด๋ณด๋ฉด !
from flask import Flask
app = Flask(__name__)
[1]
@app.route('/')
def hello_world():
return 'Hello World!'
[2]
@app.route('/user/<username>')
def show_user_profile(username):
# show the user profile for that user
return 'User %s' % username
[3]
@app.route('/post/<int:post_id>')
def show_post(post_id):
# show the post with the given id, the id is an integer
return 'Post %d' % post_id
if __name__ == '__main__':
app.run()
app = Flask(name)
๊ฐ์ฅ ๋จผ์ ์ ์ญ์์ Flask ํด๋์ค ๊ฐ์ฒด๋ฅผ ์ ์ธํ์๋ค. ํด๋น app ๊ฐ์ฒด๋ฅผ ํตํด ํ๋ผ์คํฌ๋ฅผ ์ฌ์ฉํ ์ ์๊ฒ ๋๋ค.
1) name์ ๊ฒฝ์ฐ, ํด๋น ์ฝ๋๋ฅผ ์ง์ ์คํ์ํฌ ๊ฒฝ์ฐ, "main"์ด๋ผ๋ ๋ฌธ์์ด์ด ๋ค์ด๊ฐ๊ฒ ๋2) name์ ํ์ฌ ํ์ผ์ ์๋ฏธํจ. main.py๊ฐ ๋๋ค. app์ด๋ผ๊ณ ํ๋ Flask ์ธ์คํด์ค๋ฅผ ์์ฑํ๋ค. ์๋ก์ด ์น ์ฑ์ด ์์ฑ๋๋ค.
@app.route('/')
-> default ํ์ด์ง / ์ฌ์ฉ์๊ฐ default ํ์ด์ง๋ก ์ ์ํ๋ฉด home()์ด ์คํ๋จ.
๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ์ฌ์ฉํ์ฌ hello_world ํจ์๋ฅผ wrapping๋์์์ ์ ์ ์๋ค. ์ด ๋ฐ์ฝ๋ ์ดํฐ๋ฅผ ํตํด ์น์ผ๋ก ์ ๊ทผํ ์ฌ์ฉ์๊ฐ ์ด๋ค URL์ ๋ฐ๋ผ ์ด๋ค ํจ์๋ฅผ ์คํ์์ผ์ผ ํ ์ง ์ ํด์ฃผ๊ฒ ๋๋ค. ์์ ์์ ์ ๊ฒฝ์ฐ '/'(์ฆ, ๋ฉ์ธ ํ์ด์ง)๊ฐ URL ํ๋ผ๋ฏธํฐ์ธ ์
์ด๋ค.
if name == "main":
ํ์ด์ฌ ์คํฌ๋ฆฝํธ๊ฐ ์คํ๋ ๋ ํ์ด์ฌ์ main์ ์คํฌ๋ฆฝํธ์ ํ ๋นํ๋ค.
app.run()
app์ run() ๋ฉ์๋๋ฅผ ํตํ์ฌ Flask ์น ์ดํ๋ฆฌ์ผ์ด์
์ ์คํํ ์ ์๋ค. ์๋ฌด๋ฐ ์ธ์๋ ๋๊ฒจ์ฃผ์ง ์์ ๊ฒฝ์ฐ, ์ ๋นํ ํฌํธ๋ฅผ ์ก๊ณ 127.0.0.1๋ก ์คํ์ํค๊ฒ ๋๋ค. ์ฃผ๋ก ์ฌ์ฉํ๋ ์ธ์๋ ๋ค์๊ณผ ๊ฐ๋ค.
port (ex: port = 5000)
์๋์ ์ผ๋ก ํน์ ํฌํธ ๋ฒํธ๋ฅผ ์ก๊ณ ์ถ๋ค๋ฉด ์ด๊ฑธ ์ฌ์ฉํ์.
๐ ์ด๊ฒ ์ง์ง ์ค์! app.run()์ ์ค๊ฐ์๋ค๊ฐ ๋ฃ์ด์คฌ๋ค๊ฐ server๊ฐ ์๋์๊ฐ์ ํค๋งธ๋ค^^ app.py๊ฐ runํ ์ ์๋๋ก ํธ์ถํด์ฃผ๋ ๊ฑฐ๋๊น ๊ฐ์ฅ ํ๋จ์...^^
host(ex: 0.0.0.0, 127.0.0.1 , ...)
ํด๋น ์น ์๋น์ค๋ก ์ ๊ทผ์ ํ์ฉํ๋ IP ํน์ Domain์ ์ ์ ์ ์๋ค. ์๋ฅผ ๋ค์ด (127.0.0.1)๋ฅผ ๋ณด๋ด๋ฉด ์น ์๋ฒ๋ฅผ ์คํ์ํจ ํด๋น PC ์ธ์๋ ์ ์์ด ๋ถ๊ฐ๋ฅํ์ง๋ง, ๋ชจ๋ IP๋ฅผ ๋ปํ๋ (0.0.0.0)์ ๋ณด๋ด๋ฉด ์ธ๋ถ์์๋ ์ ์์ด ๊ฐ๋ฅํด์ง๋ ์
์ด๋ค.
debug(True or False)
ํด๋น ์ต์
์ True๋ก ๋ณด๋ด์ฃผ๋ฉด, ์น ์๋ฒ๊ฐ ์คํ ์ค์ ์ฝ๋๊ฐ ๋ณ๊ฒฝ๋์ด๋ ํด๋น ์์
์ ๊ทธ๋๋ก ๋ฐ์์ํจ๋ค. ์ค์ ๋ก ๊ฐ๋ฐ ์ค์ ๊ตฌํ ํํฉ์ ์ค์๊ฐ์ผ๋ก ํ์ธํ ์ ์์ด ์์ฒญ ํธ๋ฆฌํ๋ค. ์๋ฌด ์ธ์๋ ์ฃผ์ง ์์ ๊ฒฝ์ฐ, False ์ธ์๋ก ๋ณด๋ด์ง๋ค.
[1] @app.route('/')
[2] @app.route('/user/username')
[3] @app.route('/post/<int:post_id>')