如何将基本模板扩展到其他模板

问题描述 投票:0回答:1

如何扩展基本的html文件,例如:

base.html

<!DOCTYPE html>
    <html>
    <head>
        <title>My Site</title>
    </head>
    <body>
   <!-- insert html here -->
    </body>
    </html>

然后创建一个继承该基本模板的页面,在Python Jinja2中,我会这样做:

main.html

{{ extend "base.html" }}

main.html现在具有来自base.html的所有HTML。然后,只要我在base.html文件中定义了一个区域以将html插入,就可以从main.html进行操作,在Jinja2中,它看起来像:

base.html

    <!DOCTYPE html>
    <html>
    <head>
        <title>My Site</title>
    </head>
    <body>
   {{ block "body" }}

   {{ endblock }}
    </body>
    </html>

然后进入main.html

{{ extend "base.html" }}
{{ block "body" }}
<h1>Title</h1>
{{ endblock }}

我不知道在任何Go框架中都可以做到这一点。他们似乎都说要“定义”一个模板,然后将HTML“组件”插入其中,我想采用另一种方法来定义基本HTML文件,并将其继承到要构建的其他HTML文件中(如果可以的话) ?

go go-templates
1个回答
2
投票

使用这些模板。

base.html:

<!DOCTYPE html>
<html>
<head>
<title>My Site</title>
</head>
<body>
{{block "body" $}}{{end}}
</body>
</html>`

main.html:

{{define "body"}}<h1>Title</h1>{{end}}

使用标准库模板包按扩展顺序解析模板;

t := template.Must(template.ParseFiles(
     "base.html", 
     "main.html"))

执行生成的模板。

Run it on the playground

© www.soinside.com 2019 - 2024. All rights reserved.