☰Read-only archive⌕
Looking for help with Bokeh?

This is a read-only archive. Ask questions and join the conversation on GitHub.

Visit Community Support on GitHub →
Archived discussions · Captured October 28, 2026

Using html template when starting bokeh server through python

Community Supportserver
cvdelannoy
cvdelannoy

Hi!

I have an app that makes use of an html template, index.html, which is stored in the app directory my_app/templates. If I start my app with bokeh serve /path/to/my_app (or whatever relative path is appropriate) it works fine; the template is used automatically. If I start the app by creating an instance of bokeh.server.server.Server in python and then running it, the template is not detected. In my app:

doc = Application(FunctionHandler(self.make_document))
apps = {'/': doc}
server = Server(apps, port=port)
server.show('/')

That is, the app starts up just fine and works, but the functionality that relies on some custom stuff in the template doesn’t work. Is there some way to pass to Server that the html template should be used or is there something else to make this work?

⌁   Link to post
p-himik
p-himik

bokeh serve uses DirectoryHandler which, in turn, uses the templates directory: bokeh/directory.py at be6326f1293f94a61110c8487af19458a2ce1667 · bokeh/bokeh · GitHub

You can take a look at the build_single_handler_application to see how it uses DirectoryHandler: bokeh/util.py at 996e57f8491f25b4f51b0a93b73f1145bb91f599 · bokeh/bokeh · GitHub

Alternatively, you can just write an arbitrary handler for the '/' route that serves whatever HTML you want and pass that handler with the route to the extra_patterns argument of the Server class.

⌁   Link to post
cvdelannoy
cvdelannoy

That pointed me in the right direction; all I needed to do was set doc.template to the jinja template of index.html

Thanks!

ps: I realize now the naming scheme in the code in my initial piece of code is confusing since doc is not an instance of Document. In de method self.make_document in my piece of code, an instance of Document (i.e. doc) is modified, so there I could set doc.template = template with template being the jinja template.

⌁   Link to post

End of archived discussion · Replies are disabled