๊ด€๋ฆฌ ๋ฉ”๋‰ด

Tech Log ๐Ÿ› ๏ธ

[flask] ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋ฅผ ํ†ตํ•œ ๋ผ์šฐํŠธ ํ•จ์ˆ˜ ๊ด€๋ฆฌ ๋ณธ๋ฌธ

ํ”Œ๋ผ์Šคํฌ

[flask] ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋ฅผ ํ†ตํ•œ ๋ผ์šฐํŠธ ํ•จ์ˆ˜ ๊ด€๋ฆฌ

sehaan 2023. 3. 5. 13:52

๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋ž€


ํ”Œ๋ผ์Šคํฌ์˜ ๋ธ”๋ฃจ ํ”„๋ฆฐํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ผ์šฐํŠธ ํ•จ์ˆ˜๋ฅผ ๊ตฌ์กฐ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

๋งŒ์•ฝ ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์œผ๋ฉด, ์ƒˆ๋กœ์šด url์ด ์ƒ๊ธธ ๋•Œ๋งˆ๋‹ค ๋™์ผํ•œ ํ•จ์ˆ˜๋‚ด์— ๊ณ„์† ์ถ”๊ฐ€ํ•ด์•ผํ•œ๋‹ค.

์ด๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋Š” ๋งˆ์น˜ ํด๋” ๋ณ„๋กœ ํŒŒ์ผ์„ ์ •๋ฆฌํ•˜๋“ฏ ๋ผ์šฐํŠธ ํ•จ์ˆ˜๋ฅผ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋ธ”๋ฃจ ํ”„๋ฆฐํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „

from flask import Flask


def create_app():
    app = Flask(__name__)

    @app.route('/')
    def hello_pybo():
        return 'Hello, Pybo!'
    
    return

์ƒˆ๋กœ์šด url์ด ์ƒ๊ธธ ๋•Œ๋งˆ๋‹ค create_app ํ•จ์ˆ˜ ๋‚ด์— ์ถ”๊ฐ€ํ•ด์ฃผ์–ด์•ผํ•œ๋‹ค.

ํ˜„์žฌ๋Š” hello_pybo ํ•จ์ˆ˜๋ฅผ app.route ์–ด๋…ธํ…Œ์ด์…˜์„ ์ด์šฉํ•˜์—ฌ ๋งคํ•‘ํ•˜์˜€๋‹ค.

 

๋ธ”๋ฃจ ํ”„๋ฆฐํŠธ ์ ์šฉ

 

main_view.py

from flask import Blueprint

bp = Blueprint('main', __name__, url_prefix='/')


@bp.route('/hello')
def hello_pybo():
    return 'Hello, Pybo!'


@bp.route('/')
def index():
    return 'Pybo index'

๊ฐ™์€ ๋ถ„๋ฅ˜์˜ ํ•จ์ˆ˜๊ฐ€ ๋“ค์–ด์žˆ๋Š” ํŒŒ์ผ์„ ๋”ฐ๋กœ ๋งŒ๋“  ๋‹ค์Œ ๋ธ”๋ฃจ ํ”„๋ฆฐํŠธ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์˜€๋‹ค.

๋ธ”๋ฃจ ํ”„๋ฆฐํŠธ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•  ๋• ์ด๋ฆ„ , ๋ชจ๋“ˆ๋ช… , url ํ”„๋ฆฌํ”ฝ์Šค ๊ฐ’์„ ์ „๋‹ฌํ•ด์•ผํ•œ๋‹ค.

 

__init__.py

from flask import Flask


def create_app():
    app = Flask(__name__)

    from .views import main_views
    app.register_blueprint(main_views.bp)

    return app

app.register_blueprint() ๋ฅผ ํ†ตํ•ด bp ๊ฐ์ฒด๋ฅผ ๋“ฑ๋กํ•ด์ฃผ์—ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•จ์œผ๋กœ์จ ๋ผ์šฐํŠธ ํ•จ์ˆ˜๋“ค์„ ํ•œ ๊ณณ์— ๋ชฐ์•„๋„ฃ๋Š” ๊ฒŒ ์•„๋‹Œ ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ณ„๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๊ฒŒ๋œ๋‹ค.

 

์•ž์œผ๋กœ ํ•จ์ˆ˜๊ฐ€ ๋Š˜์–ด๋‚ ์ˆ˜๋ก ๋ธ”๋ฃจํ”„๋ฆฐํŠธ๋ฅผ ์ด์šฉํ•˜๋ฉด ๋ผ์šฐํŠธ ๊ด€๋ฆฌ ํ•จ์ˆ˜์˜ ํšจ์œจ์„ฑ์ด ๋†’์•„์ง„๋‹ค.