Flask practice blog 구축 app.py, db.yaml (1/3)

2025. 4. 22. 18:13·과제
목차
  1. 📌 app.py - Flask 애플리케이션 설정 및 초기화
  2. 🚦 동작 원리 및 코드 흐름

📌 app.py - Flask 애플리케이션 설정 및 초기화

app.py는 Flask 애플리케이션의 핵심 설정 파일입니다. 이 파일은 전체 애플리케이션의 구동에 필요한 설정과 초기화 작업을 수행합니다.

1. 주요 라이브러리 임포트

from flask import Flask
from flask_mysqldb import MySQL
from flask_smorest import Api
from flask import render_template
from posts_routes import create_posts_blueprint
import yaml
  • Flask: Flask 애플리케이션을 생성하는 데 사용됩니다.
  • MySQL: MySQL 데이터베이스 연결을 위한 flask_mysqldb를 사용합니다.
  • Api: OpenAPI 문서화와 API 관리에 사용됩니다.
  • render_template: 템플릿 렌더링을 위해 사용됩니다.
  • create_posts_blueprint: posts_routes.py에서 정의된 게시글 관리 블루프린트를 가져옵니다.
  • yaml: db.yaml 파일에서 설정을 불러오기 위해 사용됩니다.

yaml: db.yaml

mysql_host: 'localhost'
mysql_user: 'root'
mysql_password: '7722'
mysql_db: 'oz'

2. Flask 애플리케이션 초기화

app = Flask(__name__)

Flask 애플리케이션 객체를 생성합니다. __name__은 현재 모듈을 나타내며, Flask가 이 파일을 시작점으로 삼습니다.

3. 데이터베이스 설정 (MySQL)

db_info = yaml.load(open('db.yaml'), Loader=yaml.FullLoader)

app.config['MYSQL_HOST'] = db_info['mysql_host']
app.config['MYSQL_USER'] = db_info['mysql_user']
app.config['MYSQL_PASSWORD'] = db_info['mysql_password']
app.config['MYSQL_DB'] = db_info['mysql_db']

mysql = MySQL(app)
  • yaml.load()를 사용하여 db.yaml 파일에서 MySQL 설정 정보를 불러옵니다.
  • app.config를 통해 MySQL 연결 설정을 Flask 애플리케이션에 적용합니다.
  • MySQL(app)을 호출하여 MySQL 객체를 초기화하고 Flask 애플리케이션에 연결합니다.

4. API 설정 및 Swagger UI

app.config["API_TITLE"] = "My API"
app.config["API_VERSION"] = "v1"
app.config["OPENAPI_VERSION"] = "3.1.3"
app.config["OPENAPI_URL_PREFIX"] = "/"
app.config["OPENAPI_SWAGGER_UI_PATH"] = "/swagger-ui"
app.config["OPENAPI_SWAGGER_UI_URL"] = "https://cdn.jsdelivr.net/npm/swagger-ui-dist/"

api = Api(app)
  • OpenAPI 문서화와 관련된 설정입니다.
  • flask_smorest 라이브러리를 사용하여 API의 문서화를 쉽게 관리합니다.
  • Swagger UI를 통해 API의 시각적 인터페이스를 제공합니다.

5. 블루프린트 등록

posts_blp = create_posts_blueprint(mysql)
api.register_blueprint(posts_blp)
  • create_posts_blueprint() 함수로 게시글 관련 기능을 다루는 블루프린트를 생성합니다.
  • 생성된 블루프린트를 api에 등록하여 API로서 사용할 수 있게 합니다.

6. 루트 URL 설정

@app.route('/blogs')
def manage_blogs():
    return render_template('posts.html')
  • /blogs 경로에서 블로그 관리 페이지를 렌더링합니다.
  • posts.html 템플릿을 렌더링하여 사용자에게 블로그 페이지를 제공합니다.

7. 애플리케이션 실행

if __name__ == '__main__':
    app.run(debug=True)
  • app.run(debug=True)를 호출하여 Flask 애플리케이션을 디버그 모드로 실행합니다. 이를 통해 애플리케이션 개발 중 발생할 수 있는 에러를 실시간으로 확인하고 수정할 수 있습니다.

from flask import Flask
from flask_mysqldb import MySQL
from flask_smorest import Api
from flask import render_template
from posts_routes import create_posts_blueprint
import yaml

app = Flask(__name__)

db_info = yaml.load(open('db.yaml'), Loader=yaml.FullLoader)

app.config['MYSQL_HOST'] = db_info['mysql_host']
app.config['MYSQL_USER'] = db_info['mysql_user']
app.config['MYSQL_PASSWORD'] = db_info['mysql_password']
app.config['MYSQL_DB'] = db_info['mysql_db']

mysql = MySQL(app)

# Blueprint 설정
app.config["API_TITLE"] = "My API"
app.config["API_VERSION"] = "v1"
app.config["OPENAPI_VERSION"] = "3.1.3"
app.config["OPENAPI_URL_PREFIX"] = "/"
app.config["OPENAPI_SWAGGER_UI_PATH"] = "/swagger-ui"
app.config["OPENAPI_SWAGGER_UI_URL"] = "https://cdn.jsdelivr.net/npm/swagger-ui-dist/"

api = Api(app)
posts_blp = create_posts_blueprint(mysql)
api.register_blueprint(posts_blp)

@app.route('/blogs')
def manage_blogs():
  return render_template('posts.html')

if __name__ == '__main__':
    app.run(debug=True)

🚦 동작 원리 및 코드 흐름

  1. 애플리케이션 초기화: Flask 객체가 생성되고, MySQL 및 flask_smorest API가 설정됩니다.
  2. 데이터베이스 연결: db.yaml에서 MySQL 설정을 불러와서 MySQL 데이터베이스와 연결합니다.
  3. 블루프린트 등록: 게시글과 관련된 API 기능을 create_posts_blueprint()를 통해 생성하고, 이를 api에 등록하여 API 엔드포인트를 만듭니다.
  4. 템플릿 렌더링: /blogs URL을 통해 posts.html 템플릿을 렌더링하여 사용자에게 블로그 관리 페이지를 제공합니다.

'과제' 카테고리의 다른 글

Flask practice blog 구축 인터페이스(UI) posts.html (3/3)  (0) 2025.04.22
Flask practice blog 구축 API 라우트 설정 posts_routes.py (2/3)  (0) 2025.04.22
Flask와 Smorest api를 이용한 책 데이터를 관리하는 기능 구현(Flask 2일차)  (0) 2025.04.18
Flask와 Jinja 템플릿으로 사용자 목록 웹 페이지 만들어보기(Flask 1일차)  (0) 2025.04.17
Mini Project : Mini Project. 회원가입폼만들기 (Javascript :2일차 과제)+@  (0) 2025.04.01
  1. 📌 app.py - Flask 애플리케이션 설정 및 초기화
  2. 🚦 동작 원리 및 코드 흐름
'과제' 카테고리의 다른 글
  • Flask practice blog 구축 인터페이스(UI) posts.html (3/3)
  • Flask practice blog 구축 API 라우트 설정 posts_routes.py (2/3)
  • Flask와 Smorest api를 이용한 책 데이터를 관리하는 기능 구현(Flask 2일차)
  • Flask와 Jinja 템플릿으로 사용자 목록 웹 페이지 만들어보기(Flask 1일차)
Chansman
Chansman
안녕하세요! 코딩을 시작한 지 얼마 되지 않은 초보 개발자 찬스맨입니다. 이 블로그는 제 학습 기록을 남기고, 다양한 코딩 실습을 통해 성장하는 과정을 공유하려고 합니다. 초보자의 눈높이에 맞춘 실습과 팁, 그리고 개발하면서 겪은 어려움과 해결 과정을 솔직하게 풀어내려 합니다. 함께 성장하는 개발자 커뮤니티가 되기를 바랍니다.
  • Chansman
    찬스맨의 프로그래밍 스토리
    Chansman
  • 전체
    오늘
    어제
    • 분류 전체보기 (552) N
      • Python (31)
      • 프로젝트 (43)
      • 과제 (23)
      • Database (40)
      • 멘토링 (10) N
      • 특강 (25)
      • 기술블로그 (176) N
      • AI 분석 (3)
      • HTML & CSS (31)
      • JavaScript (17)
      • AWS_Cloud (21)
      • 웹스크래핑과 데이터 수집 (14)
      • Flask (42)
      • Django (52)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Chansman
Flask practice blog 구축 app.py, db.yaml (1/3)

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.