I want to point to a different HTML files based on a variable. I am using include in the following format:
{% include 'templates/case/{{cid}}/intro.html' %}
This throws an error:
TemplateNotFound: templates/case/{{cid}}/intro.html
Looking at this I know Jinja2 does not resolve the variable at runtime. The value of cid = ABC
(ABC is a folder's name in the path), so I expected the total path to be:
templates/case/ABC/intro.html
If I use this resolved path directly in include it works.
How can I resolve this?
At least in Jinja2 2.7.1 this works:
{% include 'templates/case/%s/intro.html' % cid %}
Here's how to pass the code directly through include
{% include "templates/case/"+cid+"/intro.html" %}
Found the answer in another Stack Overflow question here:
{% set path = 'templates/case/' + cid + '/intro.html' %}{% include path %}
You could always compute the full path in view code and pass that down to the template, at that point, remove any quotes and curly braces around the variable.
While doing this, be wary of path traversal attacks.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With