대부분의 서비스는 사용자의 입력을 받고 그에 대한 피드백을 주는 구조로 이루어져있다.
이와 같이 현재 개발중인 '스킨트리:성분맞춤형 화장품 추천 서비스'는 사용자가 생각하는 잘 맞았던 화장품 입력값을 기반으로 추천 화장품을 계산하기 때문에 한 개 이상의 화장품 입력이 필수적이다.
따라서 화장품 입력이 없을 경우 사용자에게 알림 메세지를 출력하고 다음 단계로 넘어가지 않도록 설정할 필요가 있다.
이와 같은 기능은 Flask 의 Flash 를 사용하여 구현해볼 것이다.
Flask에서 제공하는 플래싱 시스템은 요청의 끝에 메세지를 기록하고 그 다음 요청에서만 그 메세지에 접근할 수 있도록 하는 구조로 이루어져 있다.
보통 플래싱을 처리하는 레이아웃 템플릿과 결합하여 사용된다.
Flask 를 이용해 Insert_product.html에서 Select_category.html 화면으로 redirect 되는 순서이다.
![]()
<화장품 입력값이 있는 경우>
![]()
<화장품 입력값이 없는 경우>
아래 사진의 Select_category 함수는 화장품 입력화면에서 아래 하단바의 다음 버튼을 클릭했을 때 실행되는 함수이다.

먼저 flash 모듈을 사용하기 위해 import 해준다.
from flask import flash
메세지 플래싱 기능을 사용하기 위해서는 SECRET_KEY 설정이 필수적이므로 application 상단에 키를 설정해준다
application.secret_key = 'your_secret_key'
Select_category 함수가 실행되었을 때 현재 세션에 해당하는 user 정보가 DB에 존재하는 지 검사하고 값이 존재하면 user_exist 변수에 할당한다.
우리는 값이 존재하지 않을 경우를 대비하기 위해 else 블럭에 flash 메세지를 작성한다.
flash 메세지를 전달 후 다시 현재 화면으로 불러오기 위해 redirect 함수를 이용해 Insert_product 화면으로 이동시킨다.
이제 Insert_product.html 에서 전달된 flash 메세지를 출력해보자.
<!--Flash message-->
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
<h3 style="color: red; text-align:center; font-family: LotteMartDream;">{{ message }}</h3>
{% endfor %}
{% endif %}
{% endwith %}
먼저 flask에서 전달받은 flash 메세지가 존재할 경우에만 경고 메세지를 출력해야하므로 with 문으로 messages 변수를 해당 블럭에서 사용할 수 있게 선언 후 할당한다. get_flashed_messages() 함수에서 반환값이 있을 경우 해당 메세지를 출력하는 것을 if 문으로 구현했다.
![]()
나의 경우에는 한 가지 메세지만 출력하기 때문에 여러 메세지를 분류할 필요가 없었지만 여러 케이스로 나누고 싶다면 flash 함수의 두번째 파라미터로 카테고리를 넘기고 html 템플릿에서 해당 카테고리로 불러오면 된다.
flash('It's error','Error_cate')
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
{{ category }} {{ message }}
{% endfor %}
{% endif %}
{% endwith %}
이때 category message 형식으로 출력될 것이다.
플래시 메세지를 필터링해서 불러오고 싶다면
{% with messages = get_flashed_messages(category_filter=["Error_cate"]) %}
위와 같은 코드로 수정하면 Error_cate에 해당하는 플래시 메세지만 가져올 수 있을 것이다.