/django-string-renderer

A thin wrapper around the Django templating system to render any string as a template.

Primary LanguagePythonMIT LicenseMIT

Latest PyPI version Build Status

django-string-renderer

A thin wrapper around the Django templating system to render any string as a template. It provides an easy way to render any user inputted string as a regular django template.

Requirements

This wrapper uses no models and requires no other settings than a django engine in the TEMPLATES setting where the app is used.

This package uses type annotations and mypy to check those annotations.

This package is only tested against Python >= 3.6 and Django >= 3.2.

Installation

Binary Package from PyPi

In order to use this app in a Django project, the simplest way is to install it from PyPi:

pip install django-string-renderer

From the Source Code

In order to modify or test this app you may want to install it from the source code.

Clone the GitHub repository and then run:

pip install -r requirements.txt -r requirements-dev.txt

Usage

Start by adding stringrenderer to your INSTALLED_APPS setting like this:

INSTALLED_APPS = (
    ...,
    'stringrenderer',
)

Then use the StringTemplateRenderer class to build a Django template instance from a string et render the string with the context of your choice:

import stringrenderer

template_string = "Hello {{ recipient.first_name }} {{ recipient.last_name }}!"
renderer = StringTemplateRenderer(template_string)

rendered_content = renderer.render_template(context=dict(recipient=recipient_1), request=request)
rendered_content = renderer.render_template(context=dict(recipient=recipient_2), request=None)

When the first rendering request occurs on a given StringTemplateRenderer instance, a Template object is built from the string passed to __init__(), and cached for the next rendering operations with other contexts.

You may check the template syntax of a string like this:

import stringrenderer

template_string = "Hello {{ recipient.first_name }} {{ recipient.last_name }}!"
is_valid, syntax_error = check_template_syntax(template_string)

Testing

Get the source code from GitHub, follow the installation instructions above, and run the following command:

python runtests.py

This will run the test suite with the locally installed version of Python and Django.

Projects Using this App

This app is used in the following projects:

  • MyGym Web: a web platform for managing sports clubs. django-string-renderer is used to render the messages and emails addressed to the members.