Keep undefined variables

jinja2, python, undefined

Solution

Providing `DebugUndefined` to named parameter undefined in the env, apparently does the trick. The rendered template preserves the `{{<undefined variable}}`.

Like here:

from jinja2 import Environment, BaseLoader, DebugUndefined

rtemplate = Environment(loader=BaseLoader,undefined=DebugUndefined).from_string("{{ a }} is defined, but {{ b}} is undefined")
print(rtemplate.render({"a":"a"}))

The result is:

a is defined, but {{ b }} is undefined

Problem

I am interested in rendering a template in multiple steps or keeping the tags for the undefined variables in Jinja2. I believe this would mean not only creating the 'UndefinedSilent" class (so the template won't crash on missing data) but also keeping the tags with the appropriate variable names if they are missing. Example: Let's say we have the name = "Test" included in the context, but quantity is missing. Givent the following template: ``` <p>{{name}} has {{quantity}}</p> ``` After rendering, I need the template to become: ``` <p>test has {{quantity}}</p> ``` Does anyone know if this is achievable?

Original source

Related problems