python - 如何在扩展页面的 </body> 之前添加内容? ( child 模板)

标签 python turbogears

我有 master.kid(简化版):

<html>
<head py:match="item.tag == 'head'">
  <title>My Site</title>
</head>
<body py:match="item.tag == 'body'">
  <h1>My Site</h1>
  <div py:replace="item[:]"></div>
  <p id="footer">Copyright Blixt 2010</p>
</body>
</html>

还有 mypage.kid:

<html>
<head></head>
<body>
  <p>Hello World!</p>
</body>
</html>

现在我希望能够在 </body> 之前添加更多内容生成的 HTML 中特定于 mypage.kid 的标记。

基本上结果应该是这样的:

<html>
<head>
  <title>My Site</title>
</head>
<body>
  <h1>My Site</h1>
  <p>Hello World!</p>
  <p id="footer">Copyright Blixt 2010</p>
  <script type="text/javascript">alert('Hello World!');</script>
</body>
</html>

<script>标签应在 mypage.kid 中指定。如果我必须修改 master.kid 以可选支持 </body> 之前的其他内容,那也没关系。标签,但内容是什么必须在 mypage.kid 中指定。

起初我想在 </body> 之前添加一个元素master.kid 中的标签为 py:match="item.tag == 'bodyend'"会工作。问题是它使用 mypage.kid 中元素的位置,而不是执行 py:match 的元素的位置。 。所以如果我输入 <bodyend>之前的标签 </body>在mypage.kid中,它是在<p id="footer">之前导入的,如果我把它放在 </body> 下面它会留在那里。

如何设置 master.kid 和 mypage.kid 以支持在 </body> 之前添加内容标签?

最佳答案

我发现的最佳解决方案如下:

master.kid:

<html>
<head py:match="item.tag == 'head'">
  <title>My Site</title>
</head>
<body py:match="item.tag == 'body'">
  <h1>My Site</h1>
  <div py:replace="item[:]"></div>
  <p id="footer">Copyright Blixt 2010</p>
  <div py:if="defined('body_end')" py:replace="body_end()"></div>
</body>
</html>

我的页面.kid:

<html>
<head></head>
<body>
  <p>Hello World!</p>
  <div py:def="body_end()" py:strip="True">
    <script type="text/javascript">alert('Hello World!');</script>
  </div>
</body>
</html>

master.kid 页面检查定义为 body_end 的变量,如果有这样的变量,就会调用它,替换 </body> 之前元素的内容(否则它不会输出任何内容)。

任何需要在</body>之前输出内容的页面将定义body_end函数使用 py:def="body_end()"py:strip="True"那里可以去掉包装<div> .

关于python - 如何在扩展页面的 </body> 之前添加内容? ( child 模板),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1999300/

相关文章:

python - 在 Windows 7 x86 上安装 turbogears 2.1 错误 "The system cannot find the file specified"

python - Turbogears2 和 py.test

python - 如何更新 Turbogears 应用生产数据库

python - 如何在 Turbogears 中创建可以从 Controller 内部调用或使用模板呈现的 Controller 方法

python - 在 Python 中取 int 的 2 次方模数的首选方法是什么

python - 如何在 python 中执行 cat filename*

python - flask 信号 : why is it not ok to modify data on signal?

python - 将多行连接成一行 Pandas

python - 如何跨 Python 类对象创建唯一列表?

python - Django、Turbo Gears、Web2Py,哪个更好?