목차
[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 예제 코드 다운로드
'파이썬(Python) > Flask' 카테고리의 다른 글
파이썬 Static methods란? flask에서의 활용 방법 (0) | 2023.09.21 |
---|---|
[Python]flask의 errorhandler와 Exception 예제로 이해하기(파이썬) (0) | 2023.08.23 |
[Python]flask의 cors란? 예제를 통해 차이점 이해하기(flask_cors, 파이썬) (0) | 2023.08.21 |
[Python]vue, axios란? 간단한 console 출력 예제 실습으로 이해하기(flask, 파이썬, log) (0) | 2023.08.18 |
[Python] flask Jinja2 for문, if문, 리스트 출력 예제 실습 및 풀이 (0) | 2023.08.17 |