views:

122

answers:

1

In Jinja2, how can one access assigned variables (i.e. {% set X=Y %}) within files incorporated with include?

I'd expect the following to work given two Jinja2 files:

A.jinja:

Stuff
{% include 'B.jinja' -%}
B has {{ N }} references

B.jinja:

{% set N = 12 %}

I'd expect that A.jinja, when compiled with Jinja2, would produce the following output:

Stuff 
B has 12 references

However, it produces:

Stuff
B has  references

I'd be much obliged for any input as to how to access the Jinja2 variables, such as N above, in the file that includes the file where N is set.

Thank you for reading.

Brian

+1  A: 

There's a difference between include and import, although you should be able to do both.

  • include 'B.jinja simply renders the template and ignores any variable assignments or macros within it.
  • import 'B.jinja' as B, imports B as if it were a module, so you have to output B.N.
  • from 'B.jinja' N imports variable N directly.

Change your import line to the last option and see if that fixes things. If you need more help, look at the documentation.

Nikhil Chelliah