Open source implementation of RML (Report Markup Language) from ReportLab
RML User Guide (or beginner tutorial)
Not all tags are implemented, but the main ones are. List of implemented tags
pip install trml2pdf
Create a PDF file:
import trml2pdf
print trml2pdf.parseString(open('file.rml','rt').read())
If you are using this for Django you can dynamically create an .rml file with the template system and then render it.
from django.template.loader import get_template
from django.template.context import Context
import trml2pdf
data = {'key1': 'foo'}
template = get_template('template.rml')
context = Context(data)
xmlstring = template.render(context)
pdfstr = trml2pdf.parseString(xmlstring)