Creating a custom Jinja2 filter

After looking at the previous recipe, experienced developers might wonder why we used a context processor for the purpose of creating a well-formatted product name. Well, we can also write a filter for the same purpose, which will make things much cleaner. A filter can be written to display the descriptive name of a product, as shown in the following example:

@product_blueprint.app_template_filter('full_name') 
def full_name_filter(product): 
    return '{0} / {1}'.format(product['category'], 
product['name'])

This can also be used as follows:

{{ product|full_name }} 

The preceding code will yield a similar result as in the previous recipe. Moving on, let's now take things to a higher level by using external libraries to format currency.