Django JS Asset

3.1.2 · active · verified Fri Apr 10

django-js-asset (current version 3.1.2) provides a `JS` object to insert script tags with additional HTML attributes into Django's `forms.Media` definitions, addressing a limitation in older Django versions. It also extends `forms.Media` to support `CSS` and `JSON` objects, allowing for more flexible asset management. The library is actively maintained and releases align with Django's compatibility requirements, supporting Django 4.2 and newer versions.

Warnings

Install

Imports

Quickstart

Define a custom widget or form and declare your JavaScript, CSS, or JSON assets within its inner `Media` class using `JS`, `CSS`, and `JSON` objects. This allows for passing additional HTML attributes to script/style tags or embedding JSON data directly. The `forms.Media` is then rendered in your template using `{{ form.media }}`.

from django import forms
from js_asset import JS, CSS, JSON

# Example form demonstrating usage of JS, CSS, and JSON objects in Media
class MyWidget(forms.TextInput):
    class Media:
        js = [
            # Embed JSON data directly into a script tag
            JSON({"setting": "value", "number": 123}, id="my-widget-config"),
            # Include a JavaScript module with custom attributes
            JS("my_app/js/script.js", {"type": "module", "data-priority": "high"}),
        ]
        css = {
            "all": [
                # Include an external stylesheet
                CSS("my_app/css/style.css"),
                # Include inline CSS directly
                CSS("p { color: blue; }", inline=True),
            ]
        }

class MyForm(forms.Form):
    my_field = forms.CharField(widget=MyWidget)

# In a Django template, you would render the media like this:
# {{ form.media }}

view raw JSON →