Flask — доступ к переменной конфигурации в шаблоне

Я использую Flask версии 0.7. Я сохранил путь к статическому содержимому в файле конфигурации и загрузил его, используя

app.config.from_envvar(<file_name>)

Могу ли я получить доступ к этой переменной конфигурации в шаблоне, не передавая переменные через представление?


person ranendra    schedule 18.08.2011    source источник
comment
Я использовал app.config.from_pyfile(‹file_name›) для загрузки конфигурации в переменную конфигурации flask. Начиная с Flask 0.6; config, будучи одной из глобальных переменных, доступен в шаблонах Jinja2 по умолчанию. Затем к переменным конфигурации можно легко получить доступ как к объекту словаря в шаблонах.   -  person ranendra    schedule 18.08.2011


Ответы (1)


Есть несколько глобальных переменных, которые по умолчанию передаются flask в контексте шаблонов (здесь — это полный список), один из них — config, который позволяет вам получить доступ к конфигурации приложения из шаблонов. Будучи словарем, к нему можно получить доступ, используя синтаксис config['MY_CONFIGURATION'] или config.MY_CONFIGURATION (этот синтаксис для доступа к элементам словаря специфичен для Jinja).

С другой стороны, если вы хотите передавать произвольные данные в свои шаблоны, не передавая их явно в каждом представлении, вам придется использовать контекстные процессоры.

person mdeous    schedule 18.08.2011
comment
Я просто хотел бы отметить, что в объекте конфигурации фактически хранятся только значения в верхнем регистре; это дало мне несколько минут замешательства, когда я столкнулся с тем же вопросом, что и постер. - person mikewaters; 21.03.2012
comment
Не забудьте перезагрузить Flask, если вы сохраняете свои значения конфигурации в файле Python в режиме отладки, изменения в этом файле не отслеживаются. - person Epoc; 16.06.2016
comment
Пример использования в шаблоне: {{ config.MY_CONFIGURATION }} - person Mesut Tasci; 07.10.2016
comment
Это простое решение отлично работает. Чтобы проверить, как это решение интегрируется с Docker, можно проверить этот post< /а>. - person ; 04.01.2019