import panel as pn import holoviews as hv pn.extension() template = """ {% extends base %} {% block postamble %} {% endblock %} {% block contents %} {{ app_title }}

This is a Panel app with a custom template allowing us to compose multiple Panel objects into a single HTML document.


{{ embed(roots.A) }}
{{ embed(roots.B) }}
{% endblock %} """ tmpl = pn.Template(template) tmpl.add_variable('app_title', '

Custom Template App

') tmpl.add_panel('A', hv.Curve([1, 2, 3])) tmpl.add_panel('B', hv.Curve([1, 2, 3])) tmpl.servable(); nb_template = """ {% extends base %} {% block contents %} {{ app_title }}

This is a Panel app with a custom template allowing us to compose multiple Panel objects into a single HTML document.


{{ embed(roots.A) }}
{{ embed(roots.B) }}
{% endblock %} """ tmpl = pn.Template(template, nb_template=nb_template) tmpl.add_variable('app_title', '

Custom Template App

') tmpl.add_panel('A', hv.Curve([1, 2, 3])) tmpl.add_panel('B', hv.Curve([1, 2, 3])) tmpl.servable() from jinja2 import Environment, FileSystemLoader env = Environment(loader=FileSystemLoader('.')) jinja_template = env.get_template('sample_template.html') tmpl = pn.Template(jinja_template) tmpl.add_panel('A', hv.Curve([1, 2, 3])) tmpl.add_panel('B', hv.Curve([1, 2, 3]))