Renders various data sources via Django templates
Python Shell
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.



is a tool to render Django templates using a context (i.e. variables loaded from files):

  • arbitrary JSON data
  • comma or tab-delimited data as a sequence of tuples
  • sqlite databases
  • comma or tab-delimited data as in-memory sqlite tables

Other variables may be set on the command-line using --var and --json-var.

For example, templates/html_table.tpl and templates/tex_table.tpl can be used to render sequences of tuples (where the first is a header) loaded from CSV, TSV (tab-delimited) or JSON, as tables in HTML and TeX respectively.

datatemplate also introduces some template tags to perform SQL SELECT queries over sqlite databases (or CSVs read into sqlite in-memory tables):

  • {% select field1, field2 from blah %} performs a query with exactly one row in its result, allowing {{field1}} and {{field2}} to be used until {% endselect %}
  • {% forselect field1, field2 from blah %} iterates through rows of the query, providing the forloop variable for additional control.
  • Context variables in queries are resolved: {% select field1, field2 from {{table_var}} %}

As such, datatemplate allows the robust formatting of SQL results over CSV data!

Note: although datatemplate (currently) uses the Django templating engine, it is not intended to be used for Django projects.


In writing research papers, one often has a large quantity of result data, of which only a small fragment needs to be shown in any particular paper. However, the underlying result data may change, and different reports/papers will often show different levels of detail.

Manual maintenance of tables in reports can be painful, especially if they are complicated LaTeX tables with multi-row and multi-column spans. datatemplate intends to be a generic tool for loading, extracting and formatting the necessary data.

While it may not be extremely efficient, it is relatively painless!

See the examples/ directory for some of the sorts of things that can be easily accomplished with these spiced-up Django templates. (Note that because Django templates can make a mess of whitespace, the tool is best used to output a format which is not whitespace-sensitive.)


Simply execute:

python install

to provide command-line:

datatemplate --help
datatemplate --csv data=/path/to/data.csv < templates/html_table.tpl > out.html

and Python interfaces:

import datatemplate
template = open('templates/html_table.tpl')
context_makers = [datatemplate.csv('data', '/path/to/data.csv')]
print datatemplate.render(template, context_makers)