Flask之閃現(xiàn)flash原理及使用
閃現(xiàn)—flash
這可不是LOL或是王者榮耀里的閃現(xiàn)哦~
Flask 中的 “閃現(xiàn)”(flash)是一種在請(qǐng)求之間傳遞消息的機(jī)制。它允許你將一條消息保存在一個(gè)請(qǐng)求中,在下一個(gè)請(qǐng)求中獲取并顯示該消息,然后立即將其刪除【設(shè)置完之后閱后即焚!】。
Flask 中的閃現(xiàn)機(jī)制涉及以下兩個(gè)函數(shù):
flash(message, category='message'): 這個(gè)函數(shù)用于在當(dāng)前請(qǐng)求中閃現(xiàn)一條消息。message參數(shù)是要閃現(xiàn)的消息內(nèi)容,category參數(shù)是可選的消息分類,默認(rèn)為'message'。通常情況下,消息可以分為不同的類別(如成功消息、錯(cuò)誤消息等),以便在前端進(jìn)行樣式化或特殊處理。get_flashed_messages(with_categories=False, category_filter=[]):這個(gè)函數(shù)用于獲取所有已閃現(xiàn)的消息。with_categories參數(shù)控制是否返回消息和其對(duì)應(yīng)的分類,默認(rèn)為False,即只返回消息列表。category_filter參數(shù)是可選的,用于指定要獲取的特定分類的消息。
實(shí)戰(zhàn)講解:
# -*- coding: utf-8 -*-
from flask import Flask, flash, redirect, render_template, request, url_for
app = Flask(__name__)
app.secret_key = 'GuHanZheIsCool' # 使用閃現(xiàn)必須設(shè)置secret_key哦~文末講了原因。
@app.route('/')
def index():
return render_template('index.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
# Perform login validation
username = request.form.get('username')
password = request.form.get('password')
if username == 'admin' and password == 'GuHanZhe':
flash('Login successful!', 'success')
return redirect(url_for('index'))
else:
flash('Invalid credentials!', 'error')
return render_template('login.html')
if __name__ == '__main__':
app.run()
在上述代碼中,使用 flash 函數(shù)在登錄路由中閃現(xiàn)一條成功或錯(cuò)誤消息。然后,在首頁(yè)路由中使用 get_flashed_messages 函數(shù)獲取并顯示這些已閃現(xiàn)的消息。
頁(yè)面html代碼:
<!-- index.html -->
{% with messages = get_flashed_messages() %}
{% if messages %}
<ul class="messages">
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
<!-- login.html -->
<form action="{{ url_for('login') }}" method="POST">
{% with messages = get_flashed_messages(category_filter=['error']) %}
{% if messages %}
<ul class="errors">
{% for message in messages %}
<li>{{ message }}</li>
{% endfor %}
</ul>
{% endif %}
{% endwith %}
<!-- Form fields -->
<input type="text" name="username"><br>
<input type="text" name="password"><br>
<button type="submit">Login</button>
</form>
在模板中,使用 get_flashed_messages 函數(shù)來(lái)獲取已閃現(xiàn)的消息,并根據(jù)需要在適當(dāng)?shù)奈恢眠M(jìn)行渲染和顯示??梢愿鶕?jù)消息的分類進(jìn)行樣式化或特殊處理,以便在前端進(jìn)行區(qū)分和展示。
正常訪問(wèn)登錄頁(yè)面:

輸入錯(cuò)誤賬號(hào)密碼點(diǎn)擊‘login’后:

刷新一下頁(yè)面就會(huì)發(fā)現(xiàn)提示信息沒(méi)了。這就是閱后即焚!
當(dāng)輸入正確的賬號(hào)密碼點(diǎn)擊‘login’后:

刷新頁(yè)面就會(huì)發(fā)現(xiàn)提示信息無(wú)了。這就是閱后即焚!
拓展:使用session簡(jiǎn)單實(shí)現(xiàn)閃現(xiàn)的功能:
from flask import Flask, session
app = Flask(__name__)
app.secret_key = 'GuHanZheIsCool'
@app.route('/x1')
def view_x1():
session['msg'] = '孤寒者真帥~'
return '視圖函數(shù)x1'
@app.route('/x2')
def view_x2():
msg = session.pop('msg')
print(msg)
return '視圖函數(shù)x2'
if __name__ == '__main__':
app.run()
訪問(wèn)x1路由設(shè)置:

訪問(wèn)x2路由,控制臺(tái)會(huì)打印msg,二次訪問(wèn)會(huì)報(bào)錯(cuò):

其實(shí)我們直接進(jìn)入flash源碼就會(huì)發(fā)現(xiàn)其內(nèi)部就是基于session實(shí)現(xiàn)的:

到此這篇關(guān)于Flask之閃現(xiàn)flash原理及使用的文章就介紹到這了,更多相關(guān)Flask 閃現(xiàn)flash內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python的Flask框架中@app.route的用法教程
- python使用Flask框架獲取用戶IP地址的方法
- Python的Flask框架與數(shù)據(jù)庫(kù)連接的教程
- python和flask中返回JSON數(shù)據(jù)的方法
- Python的Flask框架中使用Flask-SQLAlchemy管理數(shù)據(jù)庫(kù)的教程
- 詳解Python的Flask框架中生成SECRET_KEY密鑰的方法
- Python的Flask框架中實(shí)現(xiàn)簡(jiǎn)單的登錄功能的教程
- Python的Flask框架中實(shí)現(xiàn)分頁(yè)功能的教程
- Flask入門教程實(shí)例:搭建一個(gè)靜態(tài)博客
相關(guān)文章
Python實(shí)現(xiàn)批量上傳本地maven庫(kù)到nexus
這篇文章主要為大家詳細(xì)介紹了如何使用Python實(shí)現(xiàn)批量上傳本地maven庫(kù)到nexus,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,需要的小伙伴可以參考下2024-01-01
Python實(shí)現(xiàn)迷宮生成器的詳細(xì)代碼
這篇文章主要介紹了Python實(shí)現(xiàn)迷宮生成器的詳細(xì)代碼,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07
python解決方案:WindowsError: [Error 2]
使用Python的rename()函數(shù)重命名文件時(shí)出現(xiàn)問(wèn)題,提示 WindowsError: [Error 2] 錯(cuò)誤,需要的朋友可以參考下2016-08-08
python學(xué)習(xí)之使用Matplotlib畫實(shí)時(shí)的動(dòng)態(tài)折線圖的示例代碼
這篇文章主要介紹了python學(xué)習(xí)之使用Matplotlib畫實(shí)時(shí)的動(dòng)態(tài)折線圖的示例代碼,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-02-02
Python實(shí)現(xiàn)的遠(yuǎn)程登錄windows系統(tǒng)功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)的遠(yuǎn)程登錄windows系統(tǒng)功能,結(jié)合實(shí)例形式分析了Python基于wmi模塊的遠(yuǎn)程連接與進(jìn)程操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2018-06-06
python中pandas庫(kù)的iloc函數(shù)用法解析
在 Pandas 中,.iloc 是一種用于基于整數(shù)位置進(jìn)行索引的屬性,可以用于獲取 DataFrame 或 Series 中的數(shù)據(jù),這篇文章主要介紹了python中pandas庫(kù)的iloc函數(shù)用法,需要的朋友可以參考下2023-05-05

