Flask (1)

On a regular basisยท2021๋…„ 12์›” 7์ผ
0

Eager to learn Flask ๐Ÿ”ฅ

๋ชฉ๋ก ๋ณด๊ธฐ
1/7

๐Ÿ”ฅ 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>')

์ถœ์ฒ˜: https://blog.naver.com/shino1025/221347759426

profile
๊ฐœ๋ฐœ ๊ธฐ๋ก

0๊ฐœ์˜ ๋Œ“๊ธ€