1. 程式人生 > >Python Flask,Jinja2模板,模板中使用特殊變數及函式,閃現資訊,get_flashed_messages()

Python Flask,Jinja2模板,模板中使用特殊變數及函式,閃現資訊,get_flashed_messages()

 

在渲染模板時,不需要手動分配,可以直接在模板中使用的模板變數及函式:config、request、url_for()、get_flashed_messages()

在Flask中,有一些特殊的變數和方法是可以在模板檔案中直接訪問的。

config 物件:

config 物件就是Flask的config物件,也就是 app.config 物件。


{{ config.SQLALCHEMY_DATABASE_URI }}

 request 物件:

就是 Flask 中表示當前請求的 request 物件,request物件中儲存了一次HTTP請求的一切資訊。

request常用的屬性如下:

{{ request.url }}

url_for() 方法:

url_for() 會返回檢視函式對應的URL。如果定義的檢視函式是帶有引數的,則可以將這些引數作為命名引數傳入。

{{ url_for('index') }}

{{ url_for('post', post_id=1024) }}

get_flashed_messages() 方法:

返回之前在Flask中通過 flash() 傳入的閃現資訊列表。把字串物件表示的訊息加入到一個訊息佇列中,然後通過呼叫 get_flashed_messages() 方法取出(閃現資訊只能取出一次,取出後閃現資訊會被清空)。

demo.py(flash新增閃現資訊):

# coding:utf-8

from flask import Flask, render_template, flash   # 匯入flash


app = Flask(__name__)

app.config["SECRET_KEY"] = "SDHFOSDF"  # flash依賴於session,所有需要設定祕鑰

flag = True

@app.route("/")
def index():

    if flag:
        # 新增閃現資訊
        flash("hello1")
        flash("hello2")
        flash("hello3")
        global flag
        flag = False

    return render_template("index.html")  # 渲染模板時,不需要分配閃現資訊,模板中可以直接使用。


if __name__ == '__main__':
    app.run(debug=True)

templates/index.html(模板,get_flashed_messages()取出閃現資訊):

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>閃現</title>
</head>
<body>

    <h1>閃現資訊</h1>
    <!-- 直接通過get_flashed_messages()函式獲取檢視中的閃現資訊。(閃現資訊只能取出一次。) -->
    {% for msg in get_flashed_messages() %}
        <p>{{msg}}</p>
    {% endfor %}

</body>
</html>