- Flask Framework Cookbook
- Shalabh Aggarwal
- 267字
- 2021-08-05 17:17:22
Creating a custom Jinja2 filter
After looking at the previous recipe, experienced developers might think that it was stupid to use a context processor to create a descriptive product name. We can simply write a filter to get the same result; this will make things much cleaner. A filter can be written to display the descriptive name of the product as shown here:
@product_blueprint.template_filter('full_name') def full_name_filter(product): return '{0} / {1}'.format(product['category'], product['name'])
This can be used as follows:
{{ product|full_name }}
The preceding code will yield a similar result as it did in the previous recipe.
How to do it…
To take things to a higher level, let's create a filter to format the currency based on the current local language:
import ccy from flask import request @app.template_filter('format_currency') def format_currency_filter(amount): currency_code = ccy.countryccy(request.accept_languages.best[-2:]) return '{0} {1}'.format(currency_code, amount)
Note
The request.accept_languages
list might now work in cases where a request does not have the ACCEPT-LANGUAGES
header.
The preceding snippet will require the installation of a new package, ccy
:
$ pip install ccy
The filter created here takes the language that best matches the current browser locale (which, in my case, is en-US), takes the last two characters from the locale string, and then gets the currency as per the ISO country code that is represented by the last two characters.
How it works…
The filter can be used in our template for the product as shown:
<h3>{{ product['price']|format_currency }}</h3>
It will yield the result shown in the following screenshot:

See also
- Check out the Block composition and layout inheritance recipe to understand the context of this recipe
- Mastering Articulate Storyline
- 深入理解Java7:核心技術與最佳實踐
- 差分進化算法及其高維多目標優化應用
- Mastering Linux Network Administration
- Python忍者秘籍
- Visual Basic程序設計教程
- Julia for Data Science
- ASP.NET程序開發范例寶典
- Troubleshooting Citrix XenApp?
- uni-app跨平臺開發與應用從入門到實踐
- Hadoop 2.X HDFS源碼剖析
- C指針原理揭秘:基于底層實現機制
- Simulation for Data Science with R
- Android Game Programming by Example
- 30天學通C#項目案例開發