django-template-repl

A readline shell for the Django template language.


License
BSD-3-Clause
Install
pip install django-template-repl==0.3.0

Documentation

django-template-repl is a readline shell for the Django template language.
It is similar to a CPython shell but it interprets template code instead of
Python. It can be invoked either as a management command or with a templatetag.

To install, add 'template_repl' to your settings.INSTALLED_APPS.

The management command gives you quick access to the shell:
    python manage.py templateshell

You can pass a url to the management command to assume the context of a specific location:
    python manage.py templateshell -u /admin/foo/bar/

You can also provide context directly with a command line option. Here is
an example of an interactive session:
    $ python manage.py templateshell -c "{'foo': 'FOO', 'bar': True}"
    >>> {% if bar %}
    ... {{ foo }}
    ... {% endif %}
    FOO
    >>>

The templateshell management command also has a --pdb option to allow you to load
the context into a namespace and start a PDB debugger shell. This works in conjunction
with the -u (--url) and -c (--context) commands. It also provides a "vars" list that
shows the names of the context variables:
    $ python manage.py templateshell -u /admin/ --pdb
    ...
    ipdb> vars
    Out[0]:
    ['app_path',
     'error_message',
     'root_path',
     'title',
     'MEDIA_URL',
     'LANGUAGES',
     'LANGUAGE_BIDI',
     'LANGUAGE_CODE',
     'perms',
     'messages',
     'user']
    ipdb> print user
    AnonymousUser

In addition, you can use the repl templatetag which creates a REPL that assumes the
context of the caller template. This is basically "PDB for templates":
    {% load repl %}{% repl %}

You can also start a real PDB shell using the same tag by giving it a second argument
of "pdb". This loads the contex into the PDB namespace:
    {% load repl %}{% repl pdb %}