파이썬(Python)/Flask

[Python] flask blueprints란? 예제로 쉽게 이해하기(블루프린트, 파이썬)

끄적끄적아무거나 2023. 8. 24. 08:59
반응형

 

목차

     

     

     

     

     

    [Python] flask blueprints란?

     

    blueprint란 왜 사용하지만 알면 쉽게 이해할 수 있습니다. 웹서버를 구축하다 보면 모듈의 구조에 따라 수정을 많이 하는 부분이 있고 적게 하는 부분이 있습니다. 나중에 수정을 쉽게 하기 위해 모듈화를 해놓으면 좋습니다. blueprint란 웹서버의 모듈(Module)화를 가능하게 해 줍니다. 

     

    그리고 URL 라우팅을 분리 해주기 때문에 독립적으로 정의할 수 있습니다. 즉, URL 관리가 효율적입니다. 다음으로 Templates이나 정적 파일을 독립적으로 분류 해서 관리하기 때문에 이후에 수정이나 찾을 때 유리 합니다. 

     

    마지막으로 확장성 측면에서 유리합니다. 나중에 새로운 기능을 추가하고 싶을 경우 만들어진 모듈에 추가 모듈을 만들면 되기 때문입니다. 

     

    아래 예제를 이해 하시면 블루 프린트가 왜 모듈처럼 동작하는지를 쉽게 이해할 수 있습니다. 

     

     

     

     

     

    [Python] flask blueprints 예제 실습

     

    우선 폴더에서 py, html 파일의 구성은 아래와 같습니다. 

     

    ├── app.py
    ├── blueprints/
    │   ├── blog/
    │   │   ├── __init__.py
    │   │   └── routes.py
    ├── templates/
    │   └── blog/
    │       └── index.html

    위 그림은 실제 Visual Stuido에서 제가 폴더와 파일로 구별한 화면 입니다. 

     

     

    예제 파일: run.py>>

    from flask import Flask
    from blueprints.blog.routes import blog_bp
    
    app = Flask(__name__)
    
    app.register_blueprint(blog_bp)
    
    if __name__ == '__main__':
        app.run()

    6번 라인에서 blog_bp라는 객체를 블루프린트에 등록 해줍니다. 

     

     

     

     

    예제 파일: blueprints/blog/__init__.py>>

    from flask import Blueprint
    
    blog_bp = Blueprint('blog', __name__)
    
    from . import routes

    3번 라인: blog_bp를 객체로 선언해줍니다. 이때 Blueprint의 이름은 blog로 설정하였고 이는 다른 Blueprint와 겹치면 안됩니다. __name__은 Blueprint가 속하는 모듈의 이름입니다.

     

     

     

    예제 파일: blueprints/blog/routes.py>>

    from flask import render_template
    from . import blog_bp
    
    @blog_bp.route('/blog')
    def index():
        return render_template('blog/index.html')

    2번 라인: blueprints/blog/__init__.py 이 먼저 실행되므로 거기서 실행된 blog_bp 객체를 가져와서 사용합니다.

    4번 라인: 블루프린트 객체는 @골뱅이 문자와 함께 사용합니다. blog에 접속시 blog/index.html을 열어 줍니다. 

     

     

     

    예제 파일: templates/blog/index.html>>

    <!DOCTYPE html>
    <html>
    <head>
        <title>Blueprint Example</title>
    </head>
    <body>
        <h1>Welcome to the Blog</h1>
        <p>This is a simple example of using Flask Blueprints.</p>
    </body>
    </html>

     

     

     

     

    결과>>

     

    정상적으로 동작함을 알 수 있습니다.

     

     

     

     

     

    [Python] flask blueprints 예제 코드 다운로드

     

    run.py
    0.00MB
    __init__.py
    0.00MB
    routes.py
    0.00MB
    index.html
    0.00MB

     

     

    반응형