Using Waffle in templates

Waffle makes it easy to test flags, switches, and samples in templates to flip features on the front-end. It includes support for both Django’s built-in templates and for Jinja2.

Warning

Before using samples in templates, see the warning in the Sample chapter.

Django Templates

Load the waffle_tags template tags:

{% load waffle_tags %}

In Django templates, Waffle provides three new block types, flag, switch, and sample, that function like if blocks. Each block supports an optional else to be rendered if the flag, switch, or sample in inactive.

Flags

{% flag "flag_name" %}
    flag_name is active!
{% else %}
    flag_name is inactive
{% endflag %}

Switches

{% switch "switch_name" %}
    switch_name is active!
{% else %}
    switch_name is inactive
{% endswitch %}

Samples

{% sample "sample_name" %}
    sample_name is active!
{% else %}
    sample_name is inactive
{% endsample %}

Jinja Templates

When used with Jinja2, Waffle provides a waffle object in the Jinja template context that can be used with normal if statements. Because these are normal if statements, you can use else or if not as normal.

Flags

{% if waffle.flag('flag_name') %}
    flag_name is active!
{% endif %}

Switches

{% if waffle.switch('switch_name') %}
    switch_name is active!
{% endif %}

Samples

{% if waffle.sample('sample_name') %}
    sample_name is active!
{% endif %}