- Flask Framework Cookbook
- Shalabh Aggarwal
- 256字
- 2021-08-05 17:17:22
Creating a custom context processor
Sometimes, we might want to calculate or process a value directly in the templates. Jinja2 maintains a notion that the processing of logic should be handled in views and not in templates, and thus, it keeps the templates clean. A context processor becomes a handy tool in this case. We can pass our values to a method; this will then be processed in a Python method, and our resultant value will be returned. Therefore, we are essentially just adding a function to the template context (thanks to Python for allowing us to pass around functions just like any other object).
How to do it…
Let's say we want to show the descriptive name of the product in the format Category / Product-name
:
@product_blueprint.context_processor: def some_processor(): def full_name(product): return '{0} / {1}'.format(product['category'], product['name']) return {'full_name': full_name}
A context is simply a dictionary that can be modified to add or remove values. Any method decorated with @product_blueprint.context_processor
should return a dictionary that updates the actual context.
We can use the preceding context processor as follows:
{{ full_name(product) }}
We can add this to our app for the product listing (in the flask_app/my_app/templates/product.html
file) in the following manner:
{% extends 'home.html' %} {% block container %} <div class="top-pad"> <h4>{{ full_name(product) }}</h4> <h1>{{ product['name'] }} <small>{{ product['category'] }}</small> </h1> <h3>$ {{ product['price'] }}</h3> </div> {% endblock %}
The resulting parsed HTML page will look like the following screenshot:

See also
- Have a look at the Block composition and layout inheritance recipe to understand the context of this recipe
- Google Flutter Mobile Development Quick Start Guide
- Practical Internet of Things Security
- 趣學(xué)Python算法100例
- JavaScript:Moving to ES2015
- 微信小程序項目開發(fā)實戰(zhàn)
- Spring核心技術(shù)和案例實戰(zhàn)
- 蘋果的產(chǎn)品設(shè)計之道:創(chuàng)建優(yōu)秀產(chǎn)品、服務(wù)和用戶體驗的七個原則
- Node學(xué)習(xí)指南(第2版)
- Django 3.0應(yīng)用開發(fā)詳解
- .NET Standard 2.0 Cookbook
- C++編程兵書
- Xcode 6 Essentials
- 愛上C語言:C KISS
- Oracle 12c從入門到精通(視頻教學(xué)超值版)
- 實戰(zhàn)Python網(wǎng)絡(luò)爬蟲