Skip to content

Instantly share code, notes, and snippets.

@duncangh
Forked from sevennineteen/example.json
Last active November 11, 2021 00:09
Show Gist options
  • Save duncangh/d6ce2b24bf257bde2e84e1d9f90c08a6 to your computer and use it in GitHub Desktop.
Save duncangh/d6ce2b24bf257bde2e84e1d9f90c08a6 to your computer and use it in GitHub Desktop.
Example using Jinja2 to populate a JSON payload template
{ "path": "/content/geometrixx/my-first-jinja-page",
"properties": [
{ "name": "jcr:primaryType",
"value": "cq:Page" }],
"nodes": [
{ "path": "jcr:content",
"properties": [
{ "name": "jcr:primaryType",
"value": "cq:PageContent"},
{ "name": "sling:resourceType",
"value": "geometrixx/components/widepage"},
{ "name": "jcr:title",
"value": "{{ page.title }}" },
{ "name": "cq:template",
"value": "/apps/geometrixx/templates/widepage"},
{ "name": "cq:tags",
"type": "String[]",
"value": {{ page.tags|jsonify }} },
{ "name": "jcr:description",
"value": "{{ page.description }}" },
{ "name": "sling:vanityPath",
"value": "/connector-examples/json/" }]}
]
}
import json
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('.'))
env.filters['jsonify'] = json.dumps
# Template file at ./app/templates/example.json
template = env.get_template('jinja-example.json')
page = {
'title': 'Jinja Example Page',
'tags': ['jinja', 'python', 'migration'],
'description': 'This is an example page created using Jinja2 with a JSON template.'
}
print template.render(page=page)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment