jinja2 печать в консоль или ведение журнала
Я вроде как новичок в Jinja2 и задаюсь вопросом, есть ли способ сделать шаблоны, будучи сгенерированными, чтобы распечатать на консоль или перенаправить некоторые выходные данные в какой-то поток?
Поскольку шаблоны Jinja2 могут иметь логику внутри, я думаю, что иногда было бы полезно ввести некоторую информацию в какой-то лог-файл или, по крайней мере, распечатать на консоли.
Возможно ли это, или я просто говорю чушь?
2 ответа:
Я думаю, что вы можете достичь этого с помощью фильтров (http://jinja.pocoo.org/docs/api/#custom-filters ) или расширения (http://jinja.pocoo.org/docs/extensions/#adding-extensions ). идея состоит в том, чтобы просто распечатать фильтр или расширение прямо в консоль.
Не тестируется, но фильтр должен быть примерно таким:
def debug(text): print text return '' environment.filters['debug']=debug
Использовать как:
...<p>Hello world!</p> {{"debug text!"|debug}}...
Не забудьте удалить отладку в производственном коде!
Аналогичный, но немного отличающийся подход с использованием контекстного процессора:
В python / flask:
@app.context_processor def utility_functions(): def print_in_console(message): print str(message) return dict(mdebug=print_in_console)
В jinja2 используйте его в любом месте следующим образом:
{{ mdebug("any text or variable") }}