- Flask 教程
- Flask - 首頁
- Flask - 概述
- Flask - 環境配置
- Flask - 應用
- Flask - 路由
- Flask - 變數規則
- Flask - URL構建
- Flask - HTTP方法
- Flask - 模板
- Flask - 靜態檔案
- Flask - 請求物件
- 將表單資料傳送到模板
- Flask - Cookie
- Flask - 會話
- Flask - 重定向和錯誤處理
- Flask – 訊息閃現
- Flask - 檔案上傳
- Flask - 擴充套件
- Flask - 郵件傳送
- Flask - WTF
- Flask - SQLite
- Flask - SQLAlchemy
- Flask - Sijax
- Flask - 部署
- Flask - FastCGI
- Flask 有用資源
- Flask - 快速指南
- Flask - 有用資源
- Flask - 討論
Flask – 訊息閃現
一個良好的基於GUI的應用程式會向用戶提供關於互動的反饋。例如,桌面應用程式使用對話方塊或訊息框,JavaScript 使用警報來實現類似目的。
在Flask Web應用程式中生成此類資訊性訊息很容易。Flask框架的閃現系統使得可以在一個檢視中建立訊息,並在名為下一個的檢視函式中呈現它。
Flask模組包含flash()方法。它將訊息傳遞給下一個請求,通常是模板。
flash(message, category)
這裡:
message引數是要閃現的實際訊息。
category引數是可選的。它可以是“error”、“info”或“warning”。
為了從會話中刪除訊息,模板呼叫get_flashed_messages()。
get_flashed_messages(with_categories, category_filter)
這兩個引數都是可選的。如果接收到的訊息具有類別,則第一個引數是一個元組。第二個引數用於僅顯示特定訊息。
以下程式碼在模板中閃現接收到的訊息。
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
{{ message }}
{% endfor %}
{% endif %}
{% endwith %}
現在讓我們看一個簡單的例子,演示Flask中的閃現機制。在下面的程式碼中,“/”URL顯示指向登入頁面的連結,沒有要閃現的訊息。
@app.route('/')
def index():
return render_template('index.html')
該連結將使用者引導至“/login”URL,該URL顯示登入表單。提交後,login()檢視函式將驗證使用者名稱和密碼,並相應地閃現“success”訊息或建立“error”變數。
@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)
如果發生error,則將登入模板與錯誤訊息一起重新顯示。
Login.html
<!doctype html>
<html>
<body>
<h1>Login</h1>
{% if error %}
<p><strong>Error:</strong> {{ error }}
{% endif %}
<form action = "" method = post>
<dl>
<dt>Username:</dt>
<dd>
<input type = text name = username
value = "{{request.form.username }}">
</dd>
<dt>Password:</dt>
<dd><input type = password name = password></dd>
</dl>
<p><input type = submit value = Login></p>
</form>
</body>
</html>
另一方面,如果登入成功,則會在索引模板上閃現成功訊息。
Index.html
<!doctype html>
<html>
<head>
<title>Flask Message flashing</title>
</head>
<body>
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul>
{% for message in messages %}
<li<{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
<h1>Flask Message Flashing Example</h1>
<p>Do you want to <a href = "{{ url_for('login') }}">
<b>log in?</b></a></p>
</body>
</html>
Flask訊息閃現示例的完整程式碼如下:
Flash.py
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
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)
if __name__ == "__main__":
app.run(debug = True)
執行上述程式碼後,您將看到如下所示的螢幕。
單擊連結後,您將被定向到登入頁面。
輸入使用者名稱和密碼。
單擊登入。將顯示一條訊息“您已成功登入”。
廣告
