假设我使用return render_template('index.html', users=users)
。是否可以在模板中获取文件名而无需在视图中明确发送它?
答案 0 :(得分:13)
虽然没有记录,{{ self._TemplateReference__context.name }}
会给出模板名称。在self._TemplateReference__context
之后,您可以使用许多有趣的属性。
例如,您可以将其添加到最顶层的基本模板中:
<meta name="template" content="{{ self._TemplateReference__context.name }}">
因此,查看页面源代码可以帮助您快速找到相关的模板文件。如果您不想公开此类信息,请将其作为测试环境的条件。
答案 1 :(得分:6)
如果您只需要基本名称,则可以使用{{ self }}
,它将返回包含模板基本名称的repr字符串,例如<TemplateReference 'view.html'>
。您可以使用过滤器解析此内容,例如{{ self | quoted }}
@app.template_filter('quoted')
def quoted(s):
l = re.findall('\'([^\']*)\'', str(s))
if l:
return l[0]
return None
如果您需要完整路径,例如'/full/path/to/view.html',您可能想要继承模板。