Переменная config
Переменная config доступна внутри любого Jinja-шаблона Flask и представляет
собой словареподобный объект с настройками приложения. Она ссылается на тот же
объект, что и app.config, поэтому все ключи, заданные в Python-коде
приложения, становятся доступны в шаблоне. Значения извлекаются по имени ключа,
например config['SECRET_KEY'] или через точку config.SECRET_KEY.
Переменная особенно полезна для передачи в шаблон таких настроек, как название
сайта, режим отладки, ключи API и другие параметры, которые не стоит
дублировать в коде отображения.
Синтаксис
{{ config['KEY'] }}
{{ config.KEY }}
Пример
Давайте зададим настройку SITE_NAME в приложении и выведем её в шаблоне:
from flask import Flask, render_template
app = Flask(__name__)
app.config['SITE_NAME'] = 'My Site'
@app.route('/')
def index():
return render_template('index.html')
Теперь используем переменную config в шаблоне:
<p>{{ config['SITE_NAME'] }}</p>
Результат выполнения кода:
<p>My Site</p>
Пример
Давайте включим режим отладки и проверим его значение в шаблоне через обращение по атрибуту:
from flask import Flask, render_template
app = Flask(__name__)
app.config['DEBUG'] = True
@app.route('/')
def index():
return render_template('index.html')
Шаблон с обращением к настройке через точку:
{% if config.DEBUG %}
<p>Debug mode is on</p>
{% else %}
<p>Debug mode is off</p>
{% endif %}
Результат выполнения кода:
<p>Debug mode is on</p>
Пример
Давайте переберём все ключи конфигурации в цикле и выведем их на странице:
from flask import Flask, render_template
app = Flask(__name__)
app.config['SITE_NAME'] = 'My Site'
app.config['VERSION'] = '1.0'
@app.route('/')
def index():
return render_template('index.html')
Шаблон с циклом по элементам конфигурации:
<ul>
{% for key, value in config.items() %}
<li>{{ key }}: {{ value }}</li>
{% endfor %}
</ul>
Результат выполнения кода (фрагмент):
<ul>
<li>SITE_NAME: My Site</li>
<li>VERSION: 1.0</li>
</ul>
Смотрите также
-
тег
set,
который создаёт переменную в шаблоне -
тег
if,
который проверяет условие в шаблоне -
тег
for,
который перебирает элементы в шаблоне -
функцию
render_template,
которая рендерит Jinja-шаблон