2012-03-18 5 views

risposta

3

Se si utilizza la bottiglia di vaniglia con SimpleTemplate, c'è una soluzione su cui sono incappato.

Per il mio sito, avevo bisogno di accedere ad alcune funzioni in ogni modello, essendo app.get_url ovviamente uno di loro. Questo ha funzionato per me:

# after app creation, but before the views 
SimpleTemplate.defaults["get_url"] = app.get_url 
SimpleTemplate.defaults["url"] = lambda: request.url 
SimpleTemplate.defaults["fullpath"] = lambda: request.fullpath 
SimpleTemplate.defaults["sorted"] = sorted 

Questo funziona come della bottiglia 0.9, non ho la prova sulle versioni più recenti del quadro.

Questo comportamento non è documentato, ma Marcel Hellkamp l'ha spiegato in this thread. Qui vengono anche citate altre soluzioni:

  • Passare sopra le cifre globali in _vars o un modello simile arg.
  • Creare un decoratore per fornire i valori predefiniti.

Inoltre, in bottiglia 0,10, sono state introdotte nuove funzioni legate al problema nel modello namespace SimpleTemplate: defined, get, and setdefault

0

Nota: questa stessa soluzione può essere utilizzata con gli altri motori di modello. La tecnica è esattamente la stessa, ma tu usi BaseTemplate (funziona per tutte le classi template) o la classe per il motore che vuoi usare.