jinja_filters.pyファイルには、私が書いた数十種類のカスタムフィルタがあります。今私は、これらのフィルタを使用する必要がある複数のFlaskアプリケーションがあります。 (私は私の問題をフラスコに固有であるかどうかはわからない。)別のファイルからカスタムjinja2フィルタをインポートする方法(およびFlaskを使用する方法)
私が欲しいものを達成するための一つのハックの方法が行うことです。
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)
...
これを行うには「正しい」方法は何ですか?
EDIT:理想的には、各フィルタ名をリストする必要はありません。したがって、jinja_filters.pyに新しいフィルタを追加すると、他のコードを更新する必要はありません。すべてのアプリですぐに使用できるようになります。
これは明らかに私が持っているものより優れています。しかし、各フィルター名を明示的にリストする必要はありませんか? –
私は、 'inspect'モジュールを使ってフィルタを動的に追加できる別の解決策で自分の答えを更新しました。 – aezell
まあ、仕事は大丈夫です:)しかし、私はまだJinja2/Flaskの著者がこれを行うためのより簡潔な方法を持っていなかったとは信じられません。 (他の誰もチャイムインしていなければ、私は数日後にあなたの答えにチェックをつけます) –