2015-10-02 1 views
5

Под флягой, я хочу включить/исключить материал в шаблоне jinja, основываясь на том, находимся ли мы в режиме отладки или нет. Я не обсуждаю, является ли это хорошей или плохой идеей (я бы проголосовал «плохо», но хочу сделать это только для этого случая, тем не менее :-), так как это может произойти?Как определить режим отладки в jinja?

Я надеялся, что я не должен был бы передать переменную явно в шаблон, в отличие от этого:

render_template('foo.html', debug=app.debug) 

не то, что это было бы слишком трудно, но я предпочел бы просто волшебно сказать в шаблоне:

{% if debug %} 
     go crazzzzy 
{% endif %} 

Есть ли какая-то переменная по умолчанию, которая просто оглядывается, ожидая меня, чтобы наброситься?

+0

Вы рассматривали установки 'g.debug' на основе какой-либо другой механизм отладки переключателя (другие конфигурационные переменные/files, включая 'config', см. http://flask.pocoo.org/docs/0.10/templating/#standard-context) и использовать этот шаблон? – metatoaster

+0

@metatoaster хорошая идея, но, после некоторого разговора вокруг, nup, без радости. –

ответ

8

использование context processors

Чтобы придать новые переменные автоматически в контекст шаблона, контекстные процессоры существуют в термосе. Контекстные процессоры запускаются до визуализации шаблона и имеют возможность вводить новые значения в контекст шаблона. Контекстный процессор - это функция, которая возвращает словарь. Ключи и значения этого словаря будут объединены с контекстом шаблона для всех шаблонов в приложении:

@app.context_processor 
def inject_debug(): 
    return dict(debug=app.debug) 

Теперь debug переменная доступна в шаблонах.

1

При запуске приложения склянки с app.run(debug=True), вы также можете просто проверить config объект следующим образом:

{% if config['DEBUG'] %} 
    <h1>My html here</h1> 
{% endif %} 
Смежные вопросы