跳转到主要内容

带有额外属性的script标签用于django.forms.Media

项目描述

https://github.com/matthiask/django-js-asset/workflows/Tests/badge.svg

用法

使用此方法通过 forms.Media 插入一个带有额外属性(如 iddata-* 以支持CSP兼容的数据注入)的script标签。

from js_asset import JS

forms.Media(js=[
    JS("asset.js", {
        "id": "asset-script",
        "data-answer": "42",
    }),
])

渲染的媒体标签(通过 {{ media.js }}{{ media }})现在将包含一个如下的script标签,没有换行符

<script type="text/javascript" src="/static/asset.js"
    data-answer="42" id="asset-script"></script>

属性将自动转义。数据属性现在可以在 asset.js 中访问

var answer = document.querySelector("#asset-script").dataset.answer;

此外,由于在不同支持的Django版本中(旧版不考虑 INSTALLED_APPSdjango.contrib.staticfiles 的存在)static 的实现不同,提供了一个 js_asset.static 函数,该函数会自动执行正确的事。

在添加外部脚本资源时,应将 static=False 传递给 JS 对象,以避免通过 static() 传递脚本 URL。在这种情况下,您可能希望添加 deferasync,也许还需要添加 integritycrossorigin 属性。请注意,在使用 Django 4.1 之前的 Django 时,布尔属性没有得到良好支持,因此请按以下方式指定:

JS(
    "https://cdn.example.com/script.js",
    {"defer": "defer"},
    static=False,
)

兼容性

撰写本文时,此应用程序与 Django 1.8 及更高版本兼容(包括 Django master 分支),但请参阅 tox 配置 以获取最终答案。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源分布

django_js_asset-2.2.0.tar.gz (7.9 kB 查看哈希值)

上传时间

构建分布

django_js_asset-2.2.0-py3-none-any.whl (4.7 kB 查看哈希值)

上传时间 Python 3

由以下机构支持

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面