Ich habe eine jinja_filters.py Datei mit einigen Dutzend benutzerdefinierten Filtern, die ich geschrieben habe. Jetzt habe ich mehrere Flask-Apps, die diese Filter verwenden müssen. (Ich bin nicht sicher, ob mein Problem Flask-spezifisch ist oder nicht.)Wie importiere ich benutzerdefinierte jinja2 Filter aus einer anderen Datei (und verwende Flask)?
One hacky Weg zu erreichen, was ich will, ist zu tun:
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)
...
Was ist der „richtige“ Weg, dies zu tun?
EDIT: Im Idealfall müsste ich nicht jeden Namen filtern. Wenn ich also einen neuen Filter zu jinja_filters.py hinzufüge, muss ich keinen anderen Code aktualisieren - alle meine Apps könnten ihn sofort verwenden.
Das ist definitiv besser als das, was ich habe. Aber gibt es eine Möglichkeit, dass ich nicht jeden Filternamen explizit aufführen muss? –
Ich aktualisierte meine Antwort mit einer anderen Lösung, die dynamisch die Filter mit dem 'inspect' Modul hinzufügen konnte. – aezell
Nun, es macht den Job gut gemacht :) Aber ich kann immer noch nicht glauben, dass die Autoren von Jinja2/Flask keine prägnantere Möglichkeit hatten, dies zu tun. (Ich werde Ihre Antwort in ein paar Tagen markieren, wenn niemand sonst hereinkommt.) –