English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Flask 메시지 플래시

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)

위의 코드를 실행하면 다음과 같은 화면을 볼 수 있습니다.

링크를 클릭하면 로그인 페이지로 이동합니다. 사용자 이름과 비밀번호를 입력하십시오. -

클릭 로그인버튼. 로그인이 성공적으로 완료되었는지 한 메시지가 표시됩니다.