- Flask Framework Cookbook(Second Edition)
- Shalabh Aggarwal
- 169字
- 2021-06-24 13:58:02
How to do it...
To write a custom context processor, follow the required steps.
Let's first display the descriptive name of the product in the format Category / Product-name. Afterwards, add the method to my_app/product/views.py, as follows:
@product_blueprint.context_processor
def product_name_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 the preceding code 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 should look like the following screenshot:
Have a look at the Implementing block composition and layout inheritance recipe to understand the context of this recipe.