2015-10-02 20 views
5

Balonun altında, hata ayıklama modunda olup olmadığına göre jinja şablonunda yer alan öğeleri dahil/hariç tutmak istiyorum. Bu iyi ya da kötü bir fikir olup olmadığına dair tartışma yapmıyorum ('kötü' oy vermekteyim ama bunu sadece bu dava için yapmak istiyorum :-), bu nasıl olur?Jinja'da hata ayıklama modu nasıl algılanır?

Bunun aksine, ben şablonuna açıkça değişken geçmek olmazdı umuyordum:

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

değil bu çok zor olurdu, ama yerine sadece sihirli şablonunda söyleyebilirim o:

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

Bazı varsayılan değişkenler, sadece beni harekete geçirmeyi beklerken tembellik ediyor mu?

+0

(diğer yapılandırma değişkenleri diğer bazı debug anahtarı mekanizmasına dayanan 'g.debug' ayarı düşündünüz mü/config, 'config' dahil olmak üzere, http://flask.pocoo.org/docs/0.10/templating/#standard-context adresini ziyaret edin ve bu şablonu kullanın? – metatoaster

+0

@metatoaster güzel bir fikir, ama, biraz etrafta dolaşmadan sonra, nup, neşe yok. –

cevap

8

otomatik bir şablon bağlamında yeni değişkenler enjekte etmek kullanımı context processors

, bağlam işlemciler Flask var. İçerik işlemcileri, şablon oluşturulmadan önce çalışır ve şablon içeriğine yeni değerler enjekte etme yeteneğine sahiptir. Bir içerik işlemci, bir sözlük döndüren bir işlevdir. Bu sözlüğün anahtarlar ve değerler ardından uygulamanın tüm şablonları için, şablon bağlamında birleştirilir: şablonları

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

şimdi debug değişken erişilebilir. Eğer app.run(debug=True) ile balon uygulamasını çalıştırdığınızda

1

, ayrıca sadece çok gibi config nesneyi kontrol edebilirsiniz:

{% if config['DEBUG'] %} 
    <h1>My html here</h1> 
{% endif %} 
İlgili konular