Jinja2 print для консоли или ведения журнала
Я как бы новичок в Jinja2, и мне интересно, есть ли способ сделать шаблоны, будучи сгенерированными, для печати на консоль или перенаправления некоторого вывода на какой-то поток?
Так как шаблоны Jinja2 могут иметь логику внутри, я думаю, было бы полезно иногда записывать некоторую информацию в какой-то файл журнала или, по крайней мере, печатать на консоль.
Возможно ли это или я просто говорю мусор?
Ответы
Ответ 1
Я думаю, вы можете добиться этого, используя фильтры (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}}...
Не забудьте удалить отладку производственного кода!
Ответ 2
Аналогичный, но немного другой подход с использованием процессора контекста:
В python/колбе:
@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") }}
Ответ 3
Я хотел бы иметь HTML-элемент с установленным идентификатором и атрибут скрытого для элемента. Тогда используйте JavaScript как таковой
<p id="hidden-p">{{a_variable}}</p>
<script>
var hiddenP = document.getElementById("hidden-p").innerHTML;
console.log(hiddenP);
</script>