Evet mümkün. A html.Template
aslında bir dizi şablon dosyasıdır. Bu sette tanımlı bir blok yürütürseniz, bu sette tanımlanan diğer tüm bloklara erişebilir.
Bu tür şablon kümelerinin haritasını kendi başınıza oluşturursanız, Jinja / Django'nun sunduğu esnekliğin aynısına sahip olursunuz. Tek fark, html / şablon paketinin dosya sistemine doğrudan erişimi olmamasıdır, bu nedenle şablonları kendi başınıza ayrıştırıp oluşturmanız gerekir.
Her ikisi de "base.html" den devralan iki farklı sayfadan ("index.html" ve "other.html") oluşan aşağıdaki örneği düşünün:
{{define "base"}}<html>
<head>{{template "head" .}}</head>
<body>{{template "body" .}}</body>
</html>{{end}}
{{define "head"}}<title>index</title>{{end}}
{{define "body"}}index{{end}}
{{define "head"}}<title>other</title>{{end}}
{{define "body"}}other{{end}}
Ve aşağıdaki şablon kümeleri haritası:
tmpl := make(map[string]*template.Template)
tmpl["index.html"] = template.Must(template.ParseFiles("index.html", "base.html"))
tmpl["other.html"] = template.Must(template.ParseFiles("other.html", "base.html"))
Artık "index.html" sayfanızı arayarak oluşturabilirsiniz
tmpl["index.html"].Execute("base", data)
ve "other.html" sayfanızı şu numarayı arayarak oluşturabilirsiniz:
tmpl["other.html"].Execute("base", data)
Bazı hilelerle (örneğin, şablon dosyalarınızın tutarlı bir adlandırma kuralı), tmpl
haritayı otomatik olarak oluşturmak bile mümkündür .