How To Get File Name Of Current Template Inside Jinja2 Template?
Solution 1:
Although undocumented, {{ self._TemplateReference__context.name }}
will give the template name. And there are a number of interresting attributes that you can use after self._TemplateReference__context
.
You could, for example, add this to your topmost base template:
<meta name="template" content="{{ self._TemplateReference__context.name }}">
So that looking at a page source will help you quickly find the relevant template file. If you don't want to expose this kind of information, make it conditional to testing environment.
Solution 2:
If all you need is the basename, you can use {{ self }}
which will return a repr string containing the basename of the template, e.g., <TemplateReference 'view.html'>
. You could parse this with a filter, e.g., {{ self | quoted }}
@app.template_filter('quoted')
def quoted(s):
l = re.findall('\'([^\']*)\'', str(s))
if l:
return l[0]
return None
If you need the full path, e.g., '/full/path/to/view.html' you may want to subclass Template.
Post a Comment for "How To Get File Name Of Current Template Inside Jinja2 Template?"