2011-09-25 8 views
14

Sono using Jinja sul mio sito e mi piace.È consentito il codice in linea nei modelli Jinja?

Mi sono imbattuto in un semplice bisogno. Come visualizzare la data di oggi? C'è un modo per incorporare del codice Python in un modello Jinja?

import datetime 
now = datetime.datetime.utcnow() 
print now.strftime("%Y-%m-%d %H:%M") 

This article says no, ma suggerisce di utilizzare una macro o un filtro?

Davvero? Dobbiamo ricorrere a tutto ciò? OK, come sarebbe in questo caso?

risposta

11

No, non c'è modo di inline Python in Jinja. Tuttavia, è possibile aggiungere ai costrutti che Jinja conosce estendendo lo Environment del motore di template o lo global namespace disponibile a tutti i modelli. In alternativa, puoi aggiungere un filtro che ti consente di formattare oggetti datetime.

Il pallone memorizza l'ambiente Jinja2 su app.jinja_env. È possibile inserire nuovo contesto nell'ambiente aggiungendo direttamente a questo dizionario o utilizzando il decoratore @app.context_processor.

Qualunque percorso si scelga, questo dovrebbe essere fatto mentre si sta configurando l'applicazione, prima di aver soddisfatto le richieste. (Vedere la sezione snippet del sito web per alcuni goodexamples di come impostare i filtri - the docs contengono un buon esempio di aggiunta alle variabili globali).

3

È possibile aggiungere a global variables a cui è possibile accedere dai modelli Jinja. È possibile inserire le proprie definizioni di funzione in là, che fanno tutto ciò che è necessario.

Problemi correlati