À̹øÀå¿¡¼´Â Çöó½ºÅ©¿¡¼ ºí·çÇÁ¸°Æ®¸¦ »ç¿ëÇÏ¿© º¹ÀâÇÑ ±¸Á¶¸¦ ´Ü¼øÈ ¸ðµâÈ ½Ãų¼ö ÀÖ´Ù. main.py from flask import Flask, render_template
app = Flask(__name__) @app.route('/index') def main(): print("main controller: index") return "<a href=\"/food/index\">food</a><br>" \ "<a href=\"/fruit/index\">fruit</a>" @app.route('/food/index') def foodindex(): return "<a href=\"/index\">food</a><br>" @app.route('/fruit/index') def fruitindex(): return "<a href=\"/index\">fruit</a><br>" if __name__ == "__main__": app.run(host='0.0.0.0', port=8888, debug=True) URL ¸ÅÇÎÀÌ ÇÊ¿ä ÇÒ¶§¸¶´Ù ¶ó¿ìÆà ÇÔ¼ö°¡ Ãß°¡ µÇ¸é main.py ÆÄÀÏÀÌ °è¼Ó Ä¿Áú°ÍÀÌ´Ù. ºí·çÇÁ¸°Æ®¸¦ »ç¿ëÇÏ¸é ´Ù¸¥ ÆÄÀÏ¿¡ ¶ó¿ìÆà ÇÔ¼ö¸¦ Ãß°¡ ÇÒ¼ö°¡ ÀÖ´Ù. ºí·çÇÁ¸°Æ® »ç¿ë¹ý1. ºí·çÇÁ¸°Æ®¸¦ ÀÌ¿ëÇÏ¿© ¶ó¿ìÆà ÇÔ¼ö¸¦ Á¦ÀÛÇÑ´Ù.2. create_app ÇÔ¼ö¿¡¼ register_blueprint·Î ºí·çÇÁ¸°Æ® °´Ã¼¸¦ µî·ÏÇÑ´Ù. ¾Æ·¡¿¡¼ ÀÚ¼¼ÇÏ°Ô ¼³¸íÇϳ®. 1. ºí·çÇÁ¸°Æ®¸¦ ÀÌ¿ëÇÏ¿© ¶ó¿ìÆà ÇÔ¼ö¸¦ Á¦ÀÛÇÑ´Ù. main_controller.py ÆÄÀÏ from flask import Blueprint
bp = Blueprint('main', __name__, url_prefix='/main') # ¿äû URL : http://127.0.0.1:8888/main/index @bp.route('/index') def main(): print("main controller: index") return "<h3>¸ÞÀÎ ¸Þ´º</h3>"\ "<a href=\"/food/index\">food</a><br>" \ "<a href=\"/fruit/index\">fruit</a>" Blueprint °´Ã¼ÀÇ ÀÎÀÚ´Â ´ÙÀ½°ú °°´Ù. ù¹ø° ÀÎÀÚ: ÀÓÀÇÀÇ À̸§À¸·Î À¯ÀÏÇÑ À̸§À» °¡Á®¾ß ÇÑ´Ù. µÎ¹ø° ÀÎÀÚ: _name_Àº ¿©±â¼´Â main_controller.pyÀÌ´Ù. ¼¼¹ø° ÀÎÀÚ: url_prefixÀÌ´Ù. 2. create_app ÇÔ¼ö¿¡¼ register_blueprint·Î ºí·çÇÁ¸°Æ® °´Ã¼¸¦ µî·ÏÇÑ´Ù. main.py ÆÄÀÏ from flask import Flask
def create_app(): app = Flask(__name__) from controller import main_controller app.register_blueprint(main_controller.bp) return app if __name__ == '__main__': app = create_app() app.run(host='0.0.0.0', port=8888, debug=True) create_app ÇÔ¼ö¿¡¼ main_controller.py ÆÄÀÏ¿¡¼ Á¦ÀÛÇÑ Blueprint °´Ã¼ bp¸¦ µî·ÏÇÑ´Ù. app.register_blueprint(main_controller.bp) ½ÇÇà°á°ú) À¥ºê¶ó¿ìÁ®¿¡¼ ÁÖ¼Òâ¿¡ http://127.0.0.1:8888/main/index¸¦ ½ÇÇàÇÏ¸é ´ÙÀ½°ú °°´Ù. food, fruitµµ mainó¸§ Ãß°¡Çغ¸ÀÚ. food_controler.py, fruit_controller.py, food.html, fruit.hmml ÆÄÀÏÀÌ Ãß°¡ µÇ¾ú´Ù. ÆÄÀÏÀÇ Æ®¸® ±¸Á¶´Â ´ÙÀ½°ú °°´Ù. main.py ÆÄÀÏ from flask import Flask
def create_app(): app = Flask(__name__) from controller import main_controller from controller import food_controller from controller import fruit_controller app.register_blueprint(main_controller.bp) app.register_blueprint(food_controller.bp) app.register_blueprint(fruit_controller.bp) return app if __name__ == '__main__': app = create_app() app.run(host='0.0.0.0', port=8888, debug=True) main_controller.py ÆÄÀÏ from flask import Blueprint
bp = Blueprint('main', __name__, url_prefix='/main') # ¿äû URL : http://127.0.0.1:8888/main/index @bp.route('/index') def main(): print("main controller: index") return "<h3>¸ÞÀÎ ¸Þ´º</h3>"\ "<a href=\"/food/index\">food</a><br>" \ "<a href=\"/fruit/index\">fruit</a>" food_controller.py ÆÄÀÏ from flask import render_template, Blueprint
bp = Blueprint('food', __name__, url_prefix='/food') # ¿äû URL : http://127.0.0.1:8888/food/index @bp.route('/index') def doindex(): print("food controller: index") return render_template('food.html') @bp.route('/kimchi') def dokimchi(): print("food controller: kimchi") return "hello kimchi" fruit_controller.py ÆÄÀÏ from flask import render_template, Blueprint
bp = Blueprint('fruit', __name__, url_prefix='/fruit') # ¿äû URL : http://127.0.0.1:8888/food/index @bp.route('/index') def doindex(): print("food controller: index") return render_template('fruit.html') @bp.route('/apple') def dokimchi(): print("food controller: apple") return "hello apple" food.html ÆÄÀÏ <html>
<head> <meta content="text/html; charset=UTF-8" http-equiv="content-type"> <title>food</title> </head> <body> <h1>À½½Ä ÁÖ¼¼¿ä.</h1> <a href="/food/kimchi">kimchi</a> <br> <br> </body> </html> fruit.html ÆÄÀÏ <html>
<head> <meta content="text/html; charset=UTF-8" http-equiv="content-type"> <title>fruit</title> </head> <body> <h1>°úÀÏ ÁÖ¼¼¿ä.</h1> <a href="/fruit/apple">apple</a> <br> <br> </body> </html> ¼Ò½º: main.py controller/main_controller.py controller/food_controller.py controller/fruit_controller.py templates/food.html templates/fruit.html |