如何在 Flask 中设置 Jinja 环境变量?

Sar*_*ath 4 html python jinja2 flask

我有一个具有以下代码结构的页面:

蟒蛇代码:

from flask import Flask,render_template

app=Flask(__name__)

@app.route('/')
def home():
    return render_template("first.html")

@app.route('/second')
def next():
    return render_template("second.html")

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

Run Code Online (Sandbox Code Playgroud)

second.html 的 HTML 代码:

{% extends first.html %}
<dosomething>
</dosomething>
Run Code Online (Sandbox Code Playgroud)

现在我想设置 Jinja 的环境如下:

环境:

import jinja2

JINJA_ENV=jinja2.Environment(block_start_string='#%',block_end_string="#%",variable_start_string='{',variable_end_string='}')
Run Code Online (Sandbox Code Playgroud)

我希望此更改反映在 Flask 中。这个变量应该以某种方式用 Flask 初始化还是保持原样?

Fal*_*alc 5

它没有公开记录,但一个Flask()对象有一个.jinja_optionsdict 将用于构建 Jinja 环境。只要确保尽快设置它。

来源:

https://github.com/pallets/flask/blob/bbb273bb761461ab329f03ff2d9002f6cb81e2a4/src/flask/app.py#L272

https://github.com/pallets/flask/blob/bbb273bb761461ab329f03ff2d9002f6cb81e2a4/src/flask/app.py#L652

例子:

from flask import Flask
from jinja2 import ChainableUndefined

app = Flask(__name__)
app.jinja_options["undefined"] = ChainableUndefined
Run Code Online (Sandbox Code Playgroud)