Flask之閃現(xiàn)flash原理及使用
閃現(xiàn)—flash
這可不是LOL或是王者榮耀里的閃現(xiàn)哦~
Flask 中的 “閃現(xiàn)”(flash)是一種在請求之間傳遞消息的機(jī)制。它允許你將一條消息保存在一個(gè)請求中,在下一個(gè)請求中獲取并顯示該消息,然后立即將其刪除【設(shè)置完之后閱后即焚!】。
Flask 中的閃現(xiàn)機(jī)制涉及以下兩個(gè)函數(shù):
flash(message, category='message')
: 這個(gè)函數(shù)用于在當(dā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ù)控制是否返回消息和其對應(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ò)誤消息。然后,在首頁路由中使用 get_flashed_messages
函數(shù)獲取并顯示這些已閃現(xiàn)的消息。
頁面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ù)來獲取已閃現(xiàn)的消息,并根據(jù)需要在適當(dāng)?shù)奈恢眠M(jìn)行渲染和顯示。可以根據(jù)消息的分類進(jìn)行樣式化或特殊處理,以便在前端進(jìn)行區(qū)分和展示。
正常訪問登錄頁面:
輸入錯(cuò)誤賬號密碼點(diǎn)擊‘login’后:
刷新一下頁面就會發(fā)現(xiàn)提示信息沒了。這就是閱后即焚!
當(dāng)輸入正確的賬號密碼點(diǎn)擊‘login’后:
刷新頁面就會發(fā)現(xiàn)提示信息無了。這就是閱后即焚!
拓展:使用session簡單實(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()
訪問x1路由設(shè)置:
訪問x2路由,控制臺會打印msg,二次訪問會報(bào)錯(cuò):
其實(shí)我們直接進(jìn)入flash源碼就會發(fā)現(xiàn)其內(nèi)部就是基于session實(shí)現(xiàn)的:
到此這篇關(guān)于Flask之閃現(xiàn)flash原理及使用的文章就介紹到這了,更多相關(guān)Flask 閃現(xiàn)flash內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python的Flask框架中@app.route的用法教程
- python使用Flask框架獲取用戶IP地址的方法
- Python的Flask框架與數(shù)據(jù)庫連接的教程
- python和flask中返回JSON數(shù)據(jù)的方法
- Python的Flask框架中使用Flask-SQLAlchemy管理數(shù)據(jù)庫的教程
- 詳解Python的Flask框架中生成SECRET_KEY密鑰的方法
- Python的Flask框架中實(shí)現(xiàn)簡單的登錄功能的教程
- Python的Flask框架中實(shí)現(xiàn)分頁功能的教程
- Flask入門教程實(shí)例:搭建一個(gè)靜態(tài)博客
相關(guān)文章
Python實(shí)現(xiàn)將JSON格式文件導(dǎo)入redis
這篇文章主要為大家詳細(xì)介紹了Python實(shí)現(xiàn)將JSON格式文件導(dǎo)入redis的多種方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-01-01Python利用pywin32實(shí)現(xiàn)自動操作電腦
在windows系統(tǒng)上,重復(fù)性的操作可以用Python腳本來完成,其中常用的模塊是win32gui、win32con、win32api,要使用這三個(gè)模塊需要先安裝pywin32。本文就為大家介紹了如何利用這些模塊實(shí)現(xiàn)自動操作電腦,感興趣的可以了解一下2022-11-11django model 條件過濾 queryset.filter(**condtions)用法詳解
這篇文章主要介紹了django model 條件過濾 queryset.filter(**condtions)用法詳解,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05Python自動化運(yùn)維中服務(wù)器性能監(jiān)控與告警詳解
這篇文章主要為大家詳細(xì)介紹了Python自動化運(yùn)維中服務(wù)器性能監(jiān)控與告警的相關(guān)知識,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解下2025-04-04Python使用add_subplot與subplot畫子圖操作示例
這篇文章主要介紹了Python使用add_subplot與subplot畫子圖操作,涉及Python使用matplotlib模塊進(jìn)行圖形繪制的相關(guān)操作技巧,需要的朋友可以參考下2018-06-06Python生成器深度解析如何構(gòu)建強(qiáng)大的數(shù)據(jù)處理管道
這篇文章主要為大家介紹了Python生成器深度解析如何構(gòu)建強(qiáng)大的數(shù)據(jù)處理管道,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06Python+OpenCV實(shí)現(xiàn)將圖像轉(zhuǎn)換為二進(jìn)制格式
今天小編就為大家分享一篇Python+OpenCV實(shí)現(xiàn)將圖像轉(zhuǎn)換為二進(jìn)制格式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python計(jì)算圖片數(shù)據(jù)集的均值方差示例詳解
這篇文章主要為大家介紹了Python計(jì)算圖片數(shù)據(jù)集的均值方差,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05關(guān)于pytorch多GPU訓(xùn)練實(shí)例與性能對比分析
今天小編就為大家分享一篇關(guān)于pytorch多GPU訓(xùn)練實(shí)例與性能對比分析,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-08-08