Documentation
a project

templates

Executes the response body as a template document. Templates provide functional primitives for making simple dynamic pages. Features include HTTP subrequests, HTML file includes, Markdown rendering, JSON parsing, basic data structures, randomness, time, and more.

Syntax

templates [<matcher>] {
	mime    <types...>
	between <open_delim> <close_delim>
	root    <path>
}
  • mime are the MIME types the templates middleware will act on; any responses that do not have a qualifying Content-Type will not be evaluated as templates.

    Default: text/html text/plain.

  • between are the opening and closing delimiters for template actions. You can change them if they interfere with the rest of your document.

    Default: {{ }}.

  • root is the site root, when using functions that access the file system.

    Defaults to the site root set by the root directive, or the current working directory if not set.

Documentation for the built-in template functions can be found in templates module.

Examples

For a complete example of a site using templates to serve markdown, take a look at the source for this very website! Specifically, take a look at the Caddyfile and src/docs/index.html.

Enable templates for a static site:

example.com {
	root * /srv
	templates
	file_server
}

To serve a simple static response using a template, make sure to set Content-Type:

example.com {
	header Content-Type text/plain
	templates
	respond `Current year is: {{now | date "2006"}}`
}