如果我想在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"
属性。
是否有帮助或技巧来实现这一目标?谢谢
答案 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 类型的模块
它对我有用。