如何在django管理员中添加脚本type =“ module”

时间:2019-05-21 07:11:18

标签: python django es6-modules

如果我想在Django管理员中使用一些javascript功能,通常会使用Media类来实现该功能,

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):

    class Media:
        js = ('js/my_script.js',)

但是我现在有一个脚本,它是一个ES6模块,所以我希望Django将其呈现为:

<script src="path/to/static/js/my_script" type="module"></script>

并使用Media类不会呈现type="module"属性。

是否有帮助或技巧来实现这一目标?谢谢

3 个答案:

答案 0 :(得分:1)

您将无法使用----|类,如果您在code处进行检查,则该方法将始终呈现相同的Media

如果您真的想使用type="text/javascript"的方式,则可以创建自己的Media类并从Media继承,然后可以尝试使用forms.Media {{ 3}},它将能够使用Media生成脚本。

另一种选择是按照之前的建议使用自定义模板,或者甚至考虑向应用中添加as a dynamic property以便在模板中添加ES6模块。

答案 1 :(得分:0)

在您的自定义change_form.html模板中,扩展admin_change_form_document_ready块并添加事件侦听器代码

{% extends 'admin/change_form.html' %}
{% load static %}

{% block admin_change_form_document_ready %}
{{ block.super }}
<script type="text/javascript" src="{% static 'app/your_file.js' %}"></script>
{% endblock %}

答案 2 :(得分:0)

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):

    class Media:
        module = ('js/my_script.js',)

您可以更改 js 以替换其定义为 src 类型的模块

它对我有用。