Skip to main content

A Django 1.3+ tag to keep JavaScript out of your templates.

Project description

$ pip install jsinclude

Example of use:

<!-- template.html -->
{% load jsinclude %}
{% with 31 as age %}
    {% jsinclude widgets/profile.js "name=Jane Doe" age gender=female %}
{% endwith %}
// profile.js
console.log('My name is ' + $jsi.name);
console.log("I'm a " + $jsi.age + ' year old ' + $jsi.gender);

Syntax:

{% jsinclude <path_to_script> [{arg}] %}

Django-tag API

The JSInclude tag has two sections. First argument is the script path.

# Path can be a string..
{% jsinclude literal/path/to/script.js %}
# ..or a context variable.
# context['mypath'] == "my/script/path.js"
{% jsinclude mypath %}

The second argument section is where you can pass in your template data into the JavaScript file. There are three variable format options, and there is no limit to the number of varialbes you can pass in.

<template variable>

Any context variable can be directly provided as a tag argument. JSInclude will preserve the variable’s name in the JavaScript $jsi object.

# context['color'] == 'red'
{% jsinclude shape.js color %}

name=value

Static values that do not contain spaces can be set as a simple key=value pair.

{% jsinclude shape.js type=square %}

“name=long value”

Static values that contain spaces must be wrapped in quotes. Django 1.3 does not support arbitrary arguments in template tags, so the entire key=value pair must be wrapped in quotes.

{% jsinclude shape.js "label=my red square" %}

JavaScript API

JSInclude exposes a single JavaScript object that contains all tag arguments. This object is scoped only to the included script, so it will not remain in scope after the script has executed and does not alter global namespace at any time.

window.myglobal = 1234; // Works as expected.
var myotherglobal = 1234; // Scoped only to the jsincluded script.

$jsi

JSInclude exposes the $jsi object scoped only to the included template.

$jsi.<name>

The $jsi object contains any Django template variables preserving original naming. Static data can be loaded into the $jsi object by the name=value or "name=long value" tag argument conventions.

Configuration

# settings.py
JSINCLUDE_STATIC_PATH = 'required/path/to/static/files'
JSINCLUDE_WRAP_PATH = 'optional/path/to/custom.template'
# Built-in TEMPLATE_DEBUG will enable/disable minification.
TEMPLATE_DEBUG = True

Dependencies


Project details


Download files

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

Source Distribution

jsinclude-1.2.4.zip (16.3 kB view details)

Uploaded Source

File details

Details for the file jsinclude-1.2.4.zip.

File metadata

  • Download URL: jsinclude-1.2.4.zip
  • Upload date:
  • Size: 16.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for jsinclude-1.2.4.zip
Algorithm Hash digest
SHA256 5a9fc9b50054592c524c16f38837dcf2dcc64ef7a50149eb378965336107295a
MD5 3424ab727426f9f3cbbd6082f630760b
BLAKE2b-256 aa80bca770ed9cf60c3478f67f77f409f6c0fde28e1209ac87292a49849ed118

See more details on using hashes here.

Supported by

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