Variables
Variables are the simplest and most common Jinja2 feature. They let you insert dynamic values from your JSON data into the template.
Basic syntax
Wrap the variable name in double curly braces:
Hello {{ name }}
With this JSON:
{
"name": "Mike"
}
The output is:
Hello Mike
Accessing nested data
If your JSON has nested objects, use dot notation:
{
"customer": {
"name": "Jane",
"email": "jane@example.com"
}
}
<p>Name: {{ customer.name }}</p>
<p>Email: {{ customer.email }}</p>
Output:
Name: Jane
Email: jane@example.com
Accessing array items
Use bracket notation or dot notation with the index:
{
"colors": ["red", "green", "blue"]
}
<p>First color: {{ colors[0] }}</p>
<p>Second color: {{ colors[1] }}</p>
Default values
If a variable might not exist, you can provide a fallback:
{{ company_name | default("N/A") }}
If company_name is missing from the JSON, it will display "N/A" instead of an empty string.
Variables in different contexts
You can use variables anywhere in your HTML — inside text, attributes, styles, and more:
<h1 style="color: {{brand_color}}">{{title}}</h1>
<img src="{{logo_url}}" alt="{{company_name}} logo" />
<a href="{{website}}">Visit our website</a>
Next steps
- Conditions — show or hide content based on values
- Loops — repeat content for lists