Skip to main content

build status

A templatetag framework for easier integration of mustache.js JavaScript templates with Django templates. Inspired by ICanHaz.js, django-icanhaz, and jquery.mustache.

Quick Usage

(Read the full docs on Read the Docs)

Add "mustachejs" to your INSTALLED_APPS setting.

app/jstemplates/main.mustache:

<div>
  <p>This is {{ name }}'s template</p>
</div>

app/templates/main.html:

{% load mustachejs %}

<html>
<head>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js"></script>
  <script src="{{ STATIC_URL }}mustache/js/mustache-0.3.0.js"></script>
  <script src="{{ STATIC_URL }}mustache/js/django.mustache.js"></script>
</head>

<body>
  <div id="dynamic-area"></div>

  {% mustachejs "main" %}

  <script>
    $(document).ready(function() {

      var $area = $('#dynamic-area')
        , template;

      template = Mustache.template('main');
      $area.html(template.render());

    });
  </script>
</body>
</html>

Rationale (from django-icanhaz)

The collision between Django templates’ use of {{ and }} as template variable markers and mustache.js’ use of same has spawned a variety of solutions. One solution simply replaces [[ and ]] with {{ and }} inside an mustachejs 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!

CHANGES

0.8.3

  • Fix incorrect identifier name in makemessages command

0.8.2

  • Fix the FilesystemRegexFinder to match exactly the extensions specified in the configuration, and no more

0.8.1

  • Fix makemessages to work with recent code updates

0.8.0

  • Have the regex finder respect the MUSTACHEJS_EXTS setting

  • Update normal file finders to use glob patterns

0.7.4

  • Fix i18n preprocessor for python 2.6 compatibility

0.7.3

  • Correctly escaped translated strings.

0.7.2

  • Changed search pattern to be non-greedy.

0.7.1

  • Handle translation strings with new lines.

0.7.0

  • Pulled in commit from django-icanhaz to load templates using regular expressions.

  • Added preprocessing framework, and a preprocessor for i18n.

  • Hijack the makemessages command to find js template messages as well.

0.6.0

  • Add dustjs tag to insert a script block to create a compiled dustjs template. Thanks to Gehan Gonsalkorale.

0.5.0

  • Add mustacheraw tag to insert just the raw text of a mustacehe template. Thanks to Greg Hinch.

  • Add mustacheich tag to insert a mustache script block as icanhaz expects.

0.4.1 (2012.01.09)

  • Fixed template reading to explicitly decode template file contents using Django’s FILE_CHARSET setting. Thanks Eduard Iskandarov.

  • Fixed template-finding failure with non-normalized directories in MUSTACHEJS_DIRS. Thanks Eduard Iskandarov for report and patch.

0.4.0

  • Add the MUSTACHEJS_EXTS configuration variable for specifying the extensions allowed for template files located by the FilesystemFinder (and, by extension, the AppFinder).

0.3.3

  • Add a package_data value to the setup call

0.3.2

  • Add the MANIFEST.in file itself as an entry in MANIFEST.in.

0.3.0

  • Change the name from django-icanhaz to django-mustachejs.

  • Remove dependency on ICanHaz.js. I like the library, but the maintainers were not responsive enough for now. Use Mustache.js straight, with a little bit of minimal sugar. Templates are rendered to straight Javascript.

0.2.0 (2011.06.26)

  • Made template-finding more flexible: ICANHAZ_DIR is now ICANHAZ_DIRS (a list); added ICANHAZ_FINDERS, ICANHAZ_APP_DIRNAMES, and finding of templates in installed apps.

0.1.0 (2011.06.22)

  • Initial release.

TODO

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-mustachejs-0.8.3.tar.gz (18.2 kB view details)

Uploaded Source

File details

Details for the file django-mustachejs-0.8.3.tar.gz.

File metadata

File hashes

Hashes for django-mustachejs-0.8.3.tar.gz
Algorithm Hash digest
SHA256 f75b0275471008119faa88b3a51de792b279219cad9d3fe05d391f497286663e
MD5 2256bba933ec374208e550338101f0a2
BLAKE2b-256 7f53141bc23b121301b0fdcf6426ac16e42d516369681de957296cfc94a49c8a

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.8.3 This release

1 file

0.8.3-eol

1 file

0.8.2

1 file

0.8.1

1 file

0.7.5

1 file

0.7.4

1 file

0.7.3

1 file

0.7.2

1 file

0.7.1

1 file

0.7.0

1 file

0.6.0

1 file

0.5.0

1 file

0.4.1

1 file

0.4.0

1 file

0.3.4

1 file

0.3.3

1 file

0.3.2

1 file

0.3.1

1 file

0.3.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page