说我用return render_template('index.html', users=users)
. 是否可以在模板中获取文件名而不在视图中显式发送它?
问问题
9940 次
2 回答
20
虽然没有记录,但{{ self._TemplateReference__context.name }}
会给出模板名称。您可以在之后使用许多有趣的属性self._TemplateReference__context
。
例如,您可以将其添加到最顶层的基本模板中:
<meta name="template" content="{{ self._TemplateReference__context.name }}">
因此,查看页面源将帮助您快速找到相关的模板文件。如果您不想公开此类信息,请使其以测试环境为条件。
于 2016-10-31T16:58:35.397 回答
8
如果您只需要基本名称,您可以使用{{ 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',您可能需要子类化模板。
于 2012-09-06T14:58:33.543 回答