Ho un file jinja_filters.py con alcune dozzine di filtri personalizzati che ho scritto. Ora ho più app Flask che devono usare questi filtri. (Non sono sicuro se il mio problema è Flask-specifica o no.)Come importare filtri jinja2 personalizzati da un altro file (e usando Flask)?
Un modo hacky per realizzare quello che voglio è fare:
app = Flask(__name__)
import jinja_filters
@app.template_filter('filter_name1')
def filter_name1(arg):
return jinja_filters.filter_name1(arg)
@app.template_filter('filter_name2')
def filter_name2(arg):
return jinja_filters.filter_name2(arg)
...
Qual è il modo "giusto" per fare questo?
MODIFICA: Idealmente, non avrei bisogno di elencare ogni nome di filtro. Quindi, quando aggiungo un nuovo filtro a jinja_filters.py, non devo aggiornare nessun altro codice: tutte le mie app sarebbero in grado di usarlo subito.
Questo è decisamente migliore di quello che ho. Ma c'è un modo in cui non devo elencare esplicitamente ogni nome di filtro? –
Ho aggiornato la mia risposta con un'altra soluzione che potrebbe aggiungere dinamicamente i filtri usando il modulo 'inspect'. – aezell
Bene, il lavoro va bene :) Ma non riesco ancora a credere che gli autori di Jinja2/Flask non avessero un modo più succinto di farlo. (Darò un segno di spunta alla tua risposta tra un paio di giorni se nessun altro vi entra). –