Python Liquid
Python Liquid is a Python engine for the Liquid, the safe, customer-facing template language. We followShopify/Liquid closely and test against theGolden Liquid test suite.
Note
This is the documentation for the latest version of Python Liquid (GitHub). Find archived documentation for Python Liquid version 1.xhere.
Install
Install Python Liquid fromPyPi usingpip:
OrPipenv:
Orpoetry
Or fromconda-forge:
Quick Start
render()
This example renders a template from a string of text with the package-levelrender()
function. The template has just one placeholder variableyou
, which we've given the value"World"
.
parse()
Often you'll want to render the same template several times with different variables. We can parse source text without immediately rendering it using theparse()
function.parse()
returns aBoundTemplate
instance with arender()
method.
fromliquidimportparsetemplate=parse("Hello, {{ you }}!")print(template.render(you="World"))# Hello, World!print(template.render(you="Liquid"))# Hello, Liquid!
Configure
Bothparse()
andrender()
are convenience functions that use thedefault Liquid environment. For all but the simplest cases you'll want to configure an instance ofEnvironment
, then load and render templates from that.
fromliquidimportCachingFileSystemLoaderfromliquidimportEnvironmentenv=Environment(autoescape=True,loader=CachingFileSystemLoader("./templates"),)
Then, usingenv.parse()
orenv.get_template()
, we can create aBoundTemplate
from a string or read from the file system, respectively.
# ... continued from abovetemplate=env.parse("Hello, {{ you }}!")print(template.render(you="World"))# Hello, World!# Try to load "./templates/index.html"another_template=env.get_template("index.html")data={"some":{"thing":[1,2,3]}}result=another_template.render(**data)
Unless you happen to have a relative folder calledtemplates
with a file calledindex.html
within it, we would expect aTemplateNotFoundError
to be raised when running the example above.
What's next?
Read more aboutconfiguring Liquid environments,template loaders andmanaging render context data.