English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
GUI 기반 애플리케이션은 사용자에게 상호작용적인 피드백 정보를 제공해야 합니다. 예를 들어, 데스크톱 애플리케이션은 대화 상자나 메시지 상자를 사용하며, JavaScript는 alert() 함수를 사용하여 유사한 목적을 달성합니다.
Flask 웹 애플리케이션에서 이러한 정보 메시지를 생성하는 것은 매우 쉽습니다. Flask 프레임워크의 스플래시 시스템은 한 개의 뷰에서 메시지를 생성하고 이름이 next인 뷰 함수에서 표시할 수 있게 합니다.
Flask 모듈은 flash() 메서드를 포함합니다. 이 메서드는 메시지를 다음 요청에 전달합니다. 이 요청은 일반적으로 템플릿입니다.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 flash(message, category)
여기서 -
메시지 - 파라미터는 실제로 새로 고칠 메시지입니다。 카테고리 - 파라미터는 선택 사항입니다. ‘에러’, ‘정보’ 또는 ‘경고’ 중 하나일 수 있습니다。
세션에서 메시지를 제거하려면 템플릿이 get_flashed_messages() 함수를 호출합니다。
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 get_flashed_messages(with_categories, category_filter)
두 파라미터는 모두 선택 사항입니다. 받은 메시지가 카테고리를 가지면 첫 번째 파라미터는 튜플입니다. 두 번째 파라미터는 특정 메시지를 표시하는 데 매우 유용합니다.
다음 스플래시 템플릿에서 받은 메시지입니다.
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 {% with messages = get_flashed_messages() %} {% if messages %} {% for message in messages %} {{ message }} {% endfor %} {% endif %} {% endwith %}
/,
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 @app.route('/') def index(): return render_template('index.html')
이 링크는 사용자가 로그인 양식 표시되는 URL을 안내합니다 => “/login”. 제출 시, login() 함수는 사용자 이름과 비밀번호를 확인하고 “성공” 또는 “오류” 변수 메시지를 적절히 띄웁니다。
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 @app.route('/login, methods=['GET', 'POST']) def login(): error = None if request.method == 'POST': if request.form['username'] != 'admin' or \ request.form['password'] != 'admin': error = 'Invalid username or password. Please try again!' else: flash('You were successfully logged in') return redirect(url_for('index')) return render_template('login.html', error=error)
에러가 발생하면 로그인 템플릿이 다시 표시되고 오류 메시지가 표시됩니다。
템플릿 파일: login.html 다음은 코드입니다 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Flask 예제</title> </head> <body> <h1>로그인</h1> {% if error %} <p><strong>Error:</strong> {{ error }} {% endif %} <form action="}}/login" method="POST"> dl> <dt>사용자 이름:</dt> dd> <input type=text name="username" value="{{request.form.username}}"> </dd> <dt>비밀번호:</dt> <dd><input type="password" name="password"></dd> </dl> <p><input type=submit value="登录"></p> </form> </body> </html>
如果登录成功,则在索引模板上闪现成功消息。以下代码保存在文件( index.html) -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Flask 메시지 플래시</title> </head> <body> {% with messages = get_flashed_messages() %} {% if messages %} <ul class=flashes> {% for message in messages %} <li>{{ message }}</li>/li> {% endfor %} </ul> {% endif %} {% endwith %} <h1>Flask Message Flashing Example</h1> <p>您想要<a href="{{ url_for('login') }}"> <b>로그인?</b></a></p> </body> </html>
Flask消息闪现示例的完整代码如下所示 -
# Filename : example.py # Copyright : 2020 By w3codebox # Author by : ko.oldtoolbag.com # Date : 2020-08-08 from flask import Flask, flash, redirect, render_template, request, url_for app = Flask(__name__) app.secret_key = 'random string' @app.route('/') def index(): return render_template('index.html') @app.route('/login, methods=['GET', 'POST']) def login(): error = None print(request.method) if request.method == 'POST': if request.form['username'] != 'admin' or \ request.form['password'] != 'admin': error = 'Invalid username or password. Please try again!' else: #flash('您已成功登录') flash('You were successfully logged in') return redirect(url_for('index')) return render_template('login.html', error=error) if __name__ == "__main__": app.run(debug=True)
위의 코드를 실행하면 다음과 같은 화면을 볼 수 있습니다.
링크를 클릭하면 로그인 페이지로 이동합니다. 사용자 이름과 비밀번호를 입력하십시오. -
클릭 로그인버튼. 로그인이 성공적으로 완료되었는지 한 메시지가 표시됩니다.