2013-02-09 6 views
6

Jinja2 için yeni bir şey var ve şablonları oluştururken, konsola yazdırmak veya bazı çıkışları bir tür akışa yeniden yönlendirmek için bir yol olup olmadığını mı merak ediyorum?jinja2 yazdırma konsol veya günlüğe kaydetme

Jinja2 şablonlarının içinde mantık olabileceğinden, bazen bir tür günlük dosyasına giriş yapmak veya en azından konsola yazdırmak yararlı olur.

Bu mümkün mü, yoksa sadece çöp mü konuşuyordum?

cevap

7

Sanırım filtreleri (http://jinja.pocoo.org/docs/api/#custom-filters) veya uzantıları (http://jinja.pocoo.org/docs/extensions/#adding-extensions) kullanarak elde edebilirsiniz. Fikir sadece filtreyi veya uzantıyı doğrudan konsola yazdırmaktır.

Test edilmedi ancak filtre gibi bir şey olmalıdır:

...<p>Hello world!</p> {{"debug text!"|debug}}... 

üretim kodu hata ayıklama kaldırmayı unutmayın:

def debug(text): 
    print text 
    return '' 

environment.filters['debug']=debug 

olarak kullanılmak üzere!

+0

serin ah! Bunu başarmanın bir yolu olmalıydı. Şimdi bununla ilgili bir sorunum var. Özel filtreye gerçek dizeleri gönderemiyorum, bunu {% set text = "debug text" ile başarabilirim! " %} etiket ve sonra {{text | hata ayıklama}}. Tam dizeleri filtrelere gönderilip gönderilemeyeceğini bilmiyorum ...: -o –

+0

kuyu, kısmen (veya belki de olması gerektiği gibi), ('olması gereken)' baskı. Örneğin {{("hata ayıklama metni!") | hata ayıklama}}. Ya da daha doğrusu: {{("debug text! Value:" ~ valueINeedToLog) | hata ayıklama –

2

benzer fakat biraz farklı bir yaklaşım kullanarak bağlam işlemci: piton/şişe içinde

şu şekildedir:

@app.context_processor 
def utility_functions(): 
    def print_in_console(message): 
     print str(message) 

    return dict(mdebug=print_in_console) 

jinja2 olarak, her yerde kullanın:

{{ mdebug("any text or variable") }}