Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Embed icanhaz.js templates into Django templates with minimal fuss.
tag: v0.1.0

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
icanhaz
.gitignore
AUTHORS.rst
CHANGES.rst
LICENSE.txt
MANIFEST.in
README.rst
TODO.rst
runtests.py
setup.py
tox.ini

README.rst

django-icanhaz

A templatetag for easier integration of ICanHaz.js JavaScript templates with Django templates.

Quickstart

Dependencies

Tested with Django 1.3 through trunk, and Python 2.6 and 2.7. Almost certainly works with older versions of both.

Installation

Install from PyPI with pip:

pip install django-icanhaz

or get the in-development version:

pip install django-icanhaz==dev

Usage

  • Add "icanhaz" to your INSTALLED_APPS setting.
  • Set the ICANHAZ_DIR setting to the full (absolute) path to a directory where you will store your ICanHaz templates.
  • {% load icanhaz %} and use {% icanhaz "templatename" %} in your Django templates to safely embed the ICanHaz.js template at ICANHAZ_DIR/templatename.html into your Django template, automatically wrapped in <script id="templatename" type="text/html">, ready for ich.templatename({...}) in your JavaScript.

django-icanhaz does not bundle ICanHaz.js or provide any JavaScript utilities; it just helps you easily embed the templates in your HTML. Include ICanHaz.js in your project's static assets and use it in your JS as usual.

Philosophy

The collision between Django templates' use of {{ and }} as template variable markers and ICanHaz.js' use of same has spawned a variety of solutions. One solution simply replaces [[ and ]] with {{ and }} inside an icanhaz template tag; another makes a valiant attempt to reconstruct verbatim text within a chunk of a Django template after it has already been mangled by the Django template tokenizer.

I prefer to keep my JavaScript templates in separate files in a dedicated directory anyway, to avoid confusion between server-side and client-side templating. So my contribution to the array of solutions is essentially just an "include" tag that avoids parsing the included file as a Django template (and for convenience, automatically wraps it in the script tag that ICanHaz.js expects to find it in).

Enjoy!

Something went wrong with that request. Please try again.