Python Flask,Jinja2模板,模板中使用特殊變數及函式,閃現資訊,get_flashed_messages()
阿新 • • 發佈:2019-01-01
在渲染模板時,不需要手動分配,可以直接在模板中使用的模板變數及函式: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>