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>

猜你喜欢

转载自blog.csdn.net/houyanhua1/article/details/85470175