Примечание: это колба!
Я знаю, что этот пост довольно старый, но есть более эффективные способы сделать это в более новых версиях Flask с использованием контекстных процессоров.
Переменные могут быть легко созданы:
@app.context_processor
def example():
return dict(myexample='This is an example')
Вышесказанное можно использовать в шаблоне Jinja2 с Flask, например:
{{ myexample }}
(Какие выходы This is an example
)
А также полноценные функции:
@app.context_processor
def utility_processor():
def format_price(amount, currency=u'€'):
return u'{0:.2f}{1}'.format(amount, currency)
return dict(format_price=format_price)
Вышеуказанное при использовании выглядит так:
{{ format_price(0.33) }}
(который выводит входную цену с символом валюты)
В качестве альтернативы вы можете использовать фильтры дзиндзя , выпекаемые во фляге. Например. с использованием декораторов:
@app.template_filter('reverse')
def reverse_filter(s):
return s[::-1]
Или без декораторов и вручную регистрируя функцию:
def reverse_filter(s):
return s[::-1]
app.jinja_env.filters['reverse'] = reverse_filter
Фильтры, применяемые двумя вышеупомянутыми методами, могут использоваться следующим образом:
{% for x in mylist | reverse %}
{% endfor %}