Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- BOJ
- 자바스크립트
- PYTHON
- 스프링
- flask
- jQuery
- TIL
- 알고리즘
- 자바
- 링크
- Oracle
- javascript
- 파이썬
- java
- 이클립스
- 에러
- database
- Git
- mysql
- 웹프로그래밍
- mybatis
- sql
- 백준
- db
- rdbms
- spring
- 데이터베이스
- 플라스크
- 오라클
- eclipse
Archives
- Today
- Total
기록과 정리의 공간
[Flask] 메시지 플래싱(Message Flashing) 본문
1. 메시지 플래싱(Message Flashing)
- 플래싱 시스템은 기본적으로 요청의 끝에 메시지를 기록하고 그 다음 요청에서만 그 메시지에 접근할 수 있게 한다. 보통은 플래싱을 처리하는 레이아웃 템플릿과 결합되어 사용된다. (참고 링크)
2. flask.flash() / flask.get_flashed_messages()
메세지를 flash 하기 위하여 flash() 메소드를 사용하고 메세지를 가져오기 위하여 템플릿에서 사용할 수 있는 get_flashed_messages() 메소드를 사용할 수 있다. (참고 링크)
예제 코드
- 메시지 플래싱 기능을 사용하기 위해서는 SECRET_KEY를 반드시 설정해줘야 한다.
- 파이썬코드에서 flash()에 원하는 메시지를 인자로 넘겨준다.
- test.html(템플릿)에서 jinja의 with구문(링크-ctrl+f로 with statement검색)을 사용해 get_flashed_messages()로 메시지를 가져온다. 가져온 메시지는 복수개라는 점을 기억해두자.
from flask import Flask
from flask import request
from flask import render_template
from flask import flash
app = Flask(__name__)
app.secret_key = 'some_secret'
@app.route("/test", methods=["GET", "POST"])
def test():
if request.method == "POST":
name = request.form.get("name", type=str)
if name == "":
flash("이름을 입력하세요!")
return render_template("test.html")
return "제출 완료"
else:
return render_template("test.html")
if __name__ == "__main__":
app.run(debug=True)
# test.html
{% with messages = get_flashed_messages() %}
{% if messages %}
<script>
alert("{{messages[-1]}}")
</script>
{% endif %}
{% endwith %}
<table>
<form name="form" action="/test" method="POST">
<tbody>
<tr>
<td>이름</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="제출"></td>
</tr>
</tbody>
</form>
</table>
'라이브러리&프레임워크 > Flask' 카테고리의 다른 글
[Flask] Flask로 REST API 구현하기 / CORS란? (0) | 2020.09.06 |
---|---|
[Flask] 리다이렉트(Redirect) (0) | 2020.08.01 |
[Flask] Flask 시작 하기 (0) | 2020.07.29 |
Comments