Un-template is a minimal Python library to modify and render HTML. The idea is to start with a pure HTML document, choose the bits you want to modify using CSS style selectors, and then change them using declarative Python datastructures. This means you can use pure Python to replace sections of HTML and do all of the "template logic", similar to how declarative front-end frameworks work.
Install it with pip install ntpl
.
Here's an example. It's a Django view function that returns a web page. A file called index.html
is loaded, two HTML tags with IDs content-title
and content
are replaced with new content. A link tag with ID home
is replaced completely with a new link tag.
from ntpl import slurp, replace, replaceWith, render
template = slurp("index.html")
faqs = markdown(slurp("FAQ.md"))
def faq(request):
html = template
html = replace(html, "#content-title", "FAQ")
html = replace(html, "#content", faqs)
html = replaceWith(html, "a#home", render(["a", {"href": "/"}, "home"]))
return HttpResponse(html)
That's basically all there is to it. You can use it like this instead of Django's native internal templating language.
You can get the source code on GitHub or install it with pip
.
It is inspired by Clojure's Enlive and Hiccup, this library uses pyhiccup and Beautiful Soup to do its work.