Esiste un equivalente bottle.py di processori di contesto che si ottiene in Flask?Includi le variabili nel contesto del modello su ogni pagina con Bottle.py
risposta
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
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.