피드로 돌아가기
Extracting data from jinja for a dashboard
Dev.toDev.to
Backend

Extracting data from jinja for a dashboard

Flask 애플리케이션에서 데이터베이스 쿼리 결과를 Jinja 템플릿 변수로 전달하여 동적 HTML 콘텐츠 렌더링

Brandon Lawstein2026년 3월 26일7beginner

Context

웹 애플리케이션에서 정적 HTML만으로는 사용자 요청에 따라 변화하는 콘텐츠를 표시할 수 없다. 데이터베이스에 저장된 정보를 동적으로 화면에 반영하려면 백엔드와 프론트엔드 간의 데이터 전달 메커니즘이 필요하다.

Technical Solution

  • 데이터 추출: Flask 라우트 핸들러에서 MySQL 등의 데이터베이스에 쿼리를 실행하여 필요한 정보를 검색
  • 변수 바인딩: Flask의 render_template() 함수를 사용하여 추출한 데이터를 템플릿 변수(튜플 또는 딕셔너리 형식)로 전달
  • 반복 렌더링: Jinja 템플릿에서 for 루프를 사용하여 데이터 컬렉션을 순회하며 각 항목의 속성(name, price, description 등)을 HTML로 반복 출력
  • 조건부 렌더링: Jinja의 조건문을 활용하여 로그인 상태, 사용자 데이터 존재 여부 등에 따라 특정 HTML 요소를 표시 또는 숨김
  • 보안 처리: Jinja 템플릿 엔진이 자동으로 사용자 입력값을 이스케이프하여 XSS 공격 방지

Key Takeaway

Flask 백엔드에서 데이터 처리와 검색을 담당하고 Jinja 템플릿에서 프레젠테이션만 담당하도록 관심사를 분리하면, 표시 방식 변경 시 쿼리 로직을 수정하지 않고도 유지보수와 확장이 용이해진다.


Flask 기반 웹 애플리케이션에서 데이터베이스 조회 결과를 딕셔너리 또는 튜플 형태로 구조화하여 Jinja 템플릿에 전달하고, 템플릿에서 `for` 루프와 조건문으로 동적 렌더링을 구현하면 데이터베이스 변경사항이 페이지 재로드 시 자동으로 화면에 반영되는 동적 웹 페이지를 구현할 수 있다.

원문 읽기