To decorate an imported function in Python you would do something like this
# in ./lib.py
def function_name():
# function body
And then in your program you could decorate it like this
from lib import function_name
function_name = decorator_expression(function_name)
It's a little different in Flask because we have an app context.
Normally, you would create a custom filter like this
app = Flask(__name__)
@app.template_filter('function_name')
def function_name():
# do something
To accomplish the same end result with custom filters that are imported, we will register our custom filter in jinja_env.filters
from flask import Flask
from lib import function_name
app = Flask(__name__)
app.jinja_env.filters['function_name'] = function_name
This will let us use our function_name
filter in our templates
If have a lot of filters you could loop over an array like so
for f in [function_name, other_function_name]:
app.jinja_env.filters[f.__name__] = f
Using the __name__
method on the function gives us the method name as a string that will be available as our template filter.
We could use it in templates the same way
{{'hello world' | function_name}}
Just finishing up brewing up some fresh ground comments...