2013-03-07 22 views
5

Sto cercando di utilizzare un ambiente Jinja2 sandbox per gestire le personalizzazioni del modello.Come posso includere macro/altri modelli con un FunctionLoader in Jinja2?

Ho provato a utilizzare sia DictLoader che FunctionLoader, ma continuo a riscontrare problemi simili ... Mi occupo principalmente di FunctionLoader ora.

Non riesco a trovare include o import un altro modello (che contiene macro). La funzione "caricamento" specificata di FuctionLoader non viene mai chiamata per i modelli di riferimento.

ho provato senza fortuna:

  • appena mi aspettavo un import avrebbe colpito la pala con 'importazione' di base e 'comprendere' sintassi
  • passando il caricatore nel contesto, vedere se esso potrebbe tirare in quel modo
  • passando un dict di modelli nel contesto, anche sperando che potrebbe tirare in
  • un paio di cose, ognuno dei quali ho dimenticato

Sono sicuro che ci dev'essere un modo per supportarlo - qualcuno può indicarmi la giusta direzione?

risposta

15

La sintassi di importazione deve utilizzare stringhe tra virgolette.

Bad:

{% import utils %} 
{% import utils.macros as macros %} 
{% from utils.macros import macro_1 , macro_2 %} 

Buono:

{% import "utils" as utils %} 
{% import "utils.macros" as macros %} 
{% from "utils.macros" import macro_1 , macro_2 %} 

La stringa tra virgolette è passato nella FunctionLoader o utilizzato come il tasto con il DictLoader

+3

come nota a margine: questo comportamento non è menzionato nei documenti ufficiali a tutti. –

Problemi correlati