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

Release files for django-mustachejs 0.8.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-mustachejs 0.8.3
File Size Uploaded
django-mustachejs-0.8.3.tar.gz 18.2 kB Details

Release files / django-mustachejs-0.8.3.tar.gz

Download URL django-mustachejs-0.8.3.tar.gz
Size 18.2 kB
Tags Source
SHA-256 checksum
How to use checksums
f75b0275471008119faa88b3a51de792b279219cad9d3fe05d391f497286663e
BLAKE2b-256 checksum
How to use checksums
7f53141bc23b121301b0fdcf6426ac16e42d516369681de957296cfc94a49c8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No

Release history Release notifications | RSS feed

This release

0.8.3 This release

1 release file

0.8.2

1 release file

0.8.1

1 release file

0.7.5

1 release file

0.7.4

1 release file

0.7.3

1 release file

0.7.2

1 release file

0.7.1

1 release file

0.7.0

1 release file

0.6.0

1 release file

0.5.0

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.4

1 release file

0.3.3

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page