【问题标题】:Can I include a template that extends another in Tornado?我可以在 Tornado 中包含一个扩展另一个模板的模板吗?
【发布时间】:2013-02-04 10:56:46
【问题描述】:

我在尝试做一些简单的事情时遇到错误,例如包含扩展另一个模板的模板...我不确定这是不受支持的情况还是我做错了什么,因为它看起来像一个非常常见的场景。

我为重现错误而编写的最小代码是这样的:

test.py

​​>
import tornado.template
loader = tornado.template.Loader(".")
templ = loader.load("t1.html")

t1.html

{% include "t2.html" %}

t2.html

{% extends "t3.html" %}

t3.html

{# empty #}

在运行test.py 时,我在龙卷风的template.py 中得到一个NotImplementedError

是我遗漏了什么还是这是一个错误?

【问题讨论】:

  • 我不记得关键字extend了,但我以前做的是包含一个不同的文件,然后修改所需的块以适应新页面。尝试这样做。
  • 覆盖你需要先扩展模板的块...

标签: python templates include tornado


【解决方案1】:

啊,抱歉,我太专注于缺少的块。

您所描述的内容不适用于使用 {% include %},但对我使用 {% module Template('t2.html', **args) %} 有效,它将在其自己的命名空间中呈现模板。模块设置由 tornado.web.Application 自动完成,但在您的示例中不是使用最小模板加载器。

这个限制似乎是因为{% extends %} 标签的实现方式。

【讨论】:

  • 那是我最初的情况,我删除了这些块,以便可以用最少的必要代码重现错误。添加您建议的行仍然会引发上述错误。
猜你喜欢
  • 2014-01-18
  • 1970-01-01
  • 1970-01-01
  • 2021-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-15
相关资源
最近更新 更多