1. 程式人生 > >flask之flash

flask之flash

訊息閃現

好的應用和使用者介面的重點是回饋。如果使用者沒有得到足夠的反饋,他們可能最終會對您的應用產生不好的評價。Flask 提供了一個非常簡單的方法來使用閃現系統向用戶反饋資訊。閃現系統使得在一個請求結束的時候記錄一個資訊,然後在且僅僅在下一個請求中訪問這個資料。這通常配合一個佈局模板實現。

簡單的閃現

這裡是一個完成的例子:

from flask import Flask, flash, redirect, render_template, \
     request, url_for

app = Flask(__name__)
app.secret_key = 'some_secret'

@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'] != 'secret':
            error = 'Invalid credentials'
        else:
            flash('You were successfully logged in')
            return redirect(url_for('index'))
    return render_template('login.html', error=error)

if __name__ == "__main__":
    app.run()

這裡的 layout.html 模板完成了所有的魔術:

<!doctype html>
<title>My Application</title>
{% with messages = get_flashed_messages() %}
  {% if messages %}
    <ul class=flashes>
    {% for message in messages %}
      <li>{{ message }}</li>
    {% endfor %}
    </ul>
  {% endif %}
{% endwith %}
{% block body %}{% endblock %}

這裡是 index.html 模板:

{% extends "layout.html" %}
{% block body %}
  <h1>Overview</h1>
  <p>Do you want to <a href="{{ url_for('login') }}">log in?</a>
{% endblock %}

這裡是登陸模板:

{% extends "layout.html" %}
{% block body %}
  <h1>Login</h1>
  {% if error %}
    <p class=error><strong>Error:</strong> {{ error }}
  {% endif %}
  <form action="" method=post>
    <dl>
      <dt>Username:
      <dd><input type=text name=username value="{{
          request.form.username }}">
      <dt>Password:
      <dd><input type=password name=password>
    </dl>
    <p><input type=submit value=Login>
  </form>
{% endblock %}

分類閃現

0.3 新版功能.

當閃現一個訊息時,是可以提供一個分類的。未指定分類時預設的分類為 'message' 。 可以使用分類來提供給使用者更好的反饋,例如,錯誤資訊應該被顯示為紅色北京。

要使用一個自定義的分類,只要使用 flash() 函式的第二個引數:

flash(u'Invalid password provided', 'error')

在模板中,您接下來可以呼叫 get_flashed_messages() 函式來返回這個分類,在下面的情景中,迴圈看起來將會有一點點不一樣:

{% with messages = get_flashed_messages(with_categories=true) %}
  {% if messages %}
    <ul class=flashes>
    {% for category, message in messages %}
      <li class="{{ category }}">{{ message }}</li>
    {% endfor %}
    </ul>
  {% endif %}
{% endwith %}

這僅僅是一個渲染閃現資訊的例子,您可也可以使用分類來加入一個諸如<strong>Error:</strong> 的字首給資訊。

過濾閃現訊息

0.9 新版功能.

可選地,您可以將一個分類的列表傳入到 get_flashed_messages() 中, 以過濾函式返回的結果。如果您希望將每個分類渲染到獨立的塊中,這會非常有用。

{% with errors = get_flashed_messages(category_filter=["error"]) %}
{% if errors %}
<div class="alert-message block-message error">
  <a class="close" href="#">×</a>
  <ul>
    {%- for msg in errors %}
    <li>{{ msg }}</li>
    {% endfor -%}
  </ul>
</div>
{% endif %}
{% endwith %}

相關推薦

flaskflash

訊息閃現 好的應用和使用者介面的重點是回饋。如果使用者沒有得到足夠的反饋,他們可能最終會對您的應用產生不好的評價。Flask 提供了一個非常簡單的方法來使用閃現系統向用戶反饋資訊。閃現系統使得在一個請求結束的時候記錄一個資訊,然後在且僅僅在下一個請求中訪問這個資料。這通常配

flask cbv ,flash閃現,Flask_Session,WTForms - MoudelForm

1.CBV :  from flask import views    class LoginView(views.MethodView):   def get(self):    return  &nb

FlaskCBV,flash,Flask-Session,WTForms,DBUtils

CBV Flask的路由系統有兩種方式 :   @app.route()   app.add_url_rule() from flask import Flask, views, render_template, redirect, request, session class Log

IIS部署flask實現文件上傳功能

iis flask1、環境windows 7 x64IIS 6python 2.7.9wfastcgi-3.0.0flask-0.12.22、安裝wfastcgi,並啟動wfastcgipip install wfastcgiC:\Users\wangpan>D:\software\Python27\S

FlaskWTForms驗證

flask wtforms 有時候我們經常會跟前端提交的表單數據打交道,每次手寫驗證規則真的很繁瑣。Flask-WTF擴展模塊提供了前端表單自動生成和前端表單提交數據驗證的功能。WTForms支持的HTML標準字段字段對象說明StringField文本字段TextAreaField多行文本字段Pass

flaskwtform與flask-session組件

必須 cli method ret files cor pro dir users 1.wtform from flask import Flask, render_template, request, redirect from wtforms import Form

Flaskflask-script模塊使用

有一個 server blog 使用 src add command iss 應用 Flask Script擴展提供向Flask插入外部腳本的功能,包括運行一個開發用的服務器,一個定制的Python shell,設置數據庫的腳本,cronjobs,及其他運行在web應用之

87、flaskflask-script組件

odi 服務 返回 功能 pri 相同 只有一個 nag str Flask Script擴展提供向Flask插入外部腳本的功能,包括運行一個開發用的服務器,一個定制的Python shell,設置數據庫的腳本,cronjobs,及其他運行在web應用之外的命令行任務;使得

Flasksession相關

decode python 所有 asdf signature logout print exc gin Flask的session簡介 除請求對象之外,還有一個 session 對象。它允許你在不同請求間存儲特定用戶的信息。它是在 Cookies 的基礎上實現的,並且對

Flaskflask-session

any info cookie值 uil out system orm ati word 簡介 flask-session是flask框架的session組件,由於原來flask內置session使用簽名cookie保存,該組件則將支持session保存到多個地方,如:

Flask初學者(二)

技術 mysql pytho username g模式 ron import info 字符串格式化 Flask配置文件   在項目文件夾下新建一個“config”py文件,在代碼中“import config”後使用“app.config.from_object(con

Flask初學者(四)

必須 方便 == -s 數據 需求變化 初始 只需要 run Flask通過DOS命令行操作管理項目和數據庫遷移操作 一、插件安裝 flask-script:在(虛擬)環境中使用“pip install flask-script”進行安裝即可,此插件可以通過命令行更方

Flask初學者(六)

產生 del 時間設置 用戶 時間 tro 保存 解密 返回 Flask中的session   cookie:是一種保存數據的格式,也可以看成是保存數據的一個“盒子”,服務器返回cookie給瀏覽器(由服務器產生),由瀏覽器保存在本地,下次再訪問此服務器時瀏覽器就會自動將

Flask初學者(七)

子函數 port 傳參 不用 視圖 定義 ces 位置 裝飾器 Flask的g對象   g可以可以看作是單詞global的縮寫,使用“from flask import g”導入,g對象的作用是保存一些在一次請求中多個地方的都需要用到的數據,這些數據可能在用到的時候都需要去

Flask WebSocket

缺點 占用 主動 連接 優點 什麽 響應 成功 斷開 http:是一個協議 規定:數據傳輸格式 -/r/n/r/n 一次的請求,一次的響應,斷開了 短鏈接 無狀態 服務器收到的請求,做出的響應給客戶端 客戶端主動向服務器發起請求 基於socket send發給客戶

Flask模板宏、繼承、包含

實現 pan 同名 value 存在 包含 冗余 3.5 hold 3.5 宏、繼承、包含 類似於python中的函數,宏的作用就是在模板中重復利用代碼,避免代碼冗余。 Jinja2支持宏,還可以導入宏,需要在多處重復使用的模板代碼片段可以寫入單獨的文件,再包含在所有模板中

Flask初始化封裝

flask __name__ man 返回值 __main__ alc imp fprot 返回 # 修改info包的init文件如下: import redis from flask import Flask from flask_session import Sessi

Flask日誌的使用

bug eve Matter conf lin handle pre inf .get # 日誌等級 : # FATAL/CRITICAL = 重大的,危險的 # ERROR = 錯誤 # WARNING = 警告 # INFO = 信息 # DEBUG = 調試 #

flaskinstance_path實例路徑

object loading read time works ges explicit please abs Flask 0.8 introduces instance folders. Flask for a long time made it possible to r

FlaskWSGI:Werkzeug

ask response web 請求 esp tutorial 希望 返回 字符 WSGI 一個Web應用的本質就是: 瀏覽器發送一個HTTP請求; 服務器收到請求,生成一個HTML文檔; 服務器把HTML文檔作為HTTP響應的Body發送給瀏覽器; 瀏覽