# Buildsheet autogenerated by ravenadm tool -- Do not edit.
NAMEBASE= python-django-js-asset
VERSION= 3.0.1
KEYWORDS= python
VARIANTS= v12 v13
SDESC[v12]= Django forms.Media script tag (3.12)
SDESC[v13]= Django forms.Media script tag (3.13)
HOMEPAGE= https://github.com/matthiask/django-js-asset/
CONTACT= Python_Automaton[python@ironwolf.systems]
DOWNLOAD_GROUPS= main
SITES[main]= PYPIWHL/61/d1/be003d14c880c100d8713b2ca0a286728e6e8b47e50d25e2fab31adc9632
DISTFILE[1]= django_js_asset-3.0.1-py3-none-any.whl:main
DIST_SUBDIR= python-src
DF_INDEX= 1
SPKGS[v12]= single
SPKGS[v13]= single
OPTIONS_AVAILABLE= PY312 PY313
OPTIONS_STANDARD= none
VOPTS[v12]= PY312=ON PY313=OFF
VOPTS[v13]= PY312=OFF PY313=ON
DISTNAME= django_js_asset-3.0.1.dist-info
GENERATED= yes
[PY312].RUN_DEPENDS_ON= python-Django:single:v12
[PY312].USES_ON= python:v12,wheel
[PY313].RUN_DEPENDS_ON= python-Django:single:v13
[PY313].USES_ON= python:v13,wheel
[FILE:2520:descriptions/desc.single]
===============================================================================
django-js-asset -- script tag with additional attributes for
django.forms.Media
===============================================================================
Usage
=====
Use this to insert a script tag via ``forms.Media`` containing additional
attributes (such as id and ``data-*`` for CSP-compatible data
injection.):
.. code-block:: python
from js_asset import JS
forms.Media(js=[
JS("asset.js", {
"id": "asset-script",
"data-answer": "42",
}),
])
The rendered media tag (via ``{{ media.js }} or {{ media }}`` will
now contain a script tag as follows, without line breaks:
.. code-block:: html
The attributes are automatically escaped. The data attributes may now be
accessed inside ``asset.js``:
.. code-block:: javascript
var answer = document.querySelector("#asset-script").dataset.answer;
Also, because the implementation of static differs between supported
Django versions (older do not take the presence of
``django.contrib.staticfiles in INSTALLED_APPS`` into account), a
``js_asset.static`` function is provided which does the right thing
automatically.
CSS and JSON support
====================
Since 3.0 django-js-asset also ships a CSS and JSON media object which
can be used to ship stylesheets, inline styles and JSON blobs to the
frontend.
It's recommended to pass those through ``forms.Media(js=[]) as well since
js is a simple list while css`` uses a dictionary keyed with the media to
use for the stylesheet.
So, you can add everything at once:
.. code-block:: python
from js_asset import CSS, JS, JSON
forms.Media(js=[
JSON({"configuration": 42}, id="widget-configuration"),
CSS("widget/style.css"),
CSS("p{color:red;}", inline=True),
JS("widget/script.js", {"type": "module"}),
])
This produces:
.. code-block:: html
Compatibility
=============
At the time of writing this app is compatible with Django 4.2 and better
(up to and including the Django main branch), but have a look at the
[tox configuration
] for
definitive answers.
[FILE:128:distinfo]
0b7ee73c45ca65cccbcc2f60cbe8fbc87ff133b543c282cb64fe6c13d7ca4c10 4283 python-src/django_js_asset-3.0.1-py3-none-any.whl