webpy:如何覆盖基本模板的内容?

2 投票
1 回答
1371 浏览
提问于 2025-04-16 09:23

我正在使用webpy和一个基本的模板。

render = web.template.render(basedir + 'templates/', base='layout', globals=globals_vars_custom)

layout.html文件中,我有这样的内容:

$def with (content)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
    <head>
        <title>PAGE TITLE</title>
        <!-- Some CSS and some javascript -->
    </head>
    <body>
        $:content
    </body>
</html>

这个基本模板在我网站的90%部分都能正常工作,但我有一个页面需要在<head>标签里插入一些其他数据(比如一些元标签)。

我该怎么做呢?我怎么才能把<head>放在一个结构里,这样我就可以在模板中轻松覆盖它?

谢谢!

1 个回答

5

这比我想的要简单:

你可以在模板里创建一个变量:

在 page.html 里你可以定义一个变量

$var title = 'specific title'

在基础模板 layout.html 里你可以调用这个变量:

$def with (content)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
    <head>
        <title>$content.get("title","DEFAULT TITLE")</title>
        <!-- Some CSS and some javascript -->
    </head>
    <body>
        $:content
    </body>
</html>

我希望这个回答对其他人也有帮助。

撰写回答