- 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
- Java語言程序設(shè)計
- 造個小程序:與微信一起干件正經(jīng)事兒
- Learning Informatica PowerCenter 10.x(Second Edition)
- 從0到1:HTML+CSS快速上手
- Python應(yīng)用輕松入門
- R Data Analysis Cookbook(Second Edition)
- 從Java到Web程序設(shè)計教程
- Python網(wǎng)絡(luò)爬蟲技術(shù)與應(yīng)用
- Mastering PowerCLI
- ROS機器人編程實戰(zhàn)
- Python Django Web從入門到項目實戰(zhàn)(視頻版)
- Visual Basic程序設(shè)計
- 流程讓管理更高效:流程管理全套方案制作、設(shè)計與優(yōu)化
- 測試基地實訓(xùn)指導(dǎo)
- Python程序設(shè)計案例教程:從入門到機器學(xué)習(xí)(微課版)