Как добавить скрипт type = "module" в админку django - PullRequest
0 голосов
/ 21 мая 2019

Если мне нужна некоторая функциональность javascript в моем администраторе Django, я обычно использую класс 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".

Любая помощь или советы для достижения этой цели?Спасибо

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Вы не сможете использовать класс Media для этого, если вы проверите код , метод всегда будет отображать один и тот же type="text/javascript".

Если выЕсли вы действительно хотите пойти по пути Media, вы можете создать свой собственный класс Media и наследовать от forms.Media, тогда вы можете попробовать использовать Media в качестве динамического свойства , которое сможетсгенерируйте скрипт с type="module".

Другой вариант - использовать пользовательский шаблон, как предлагалось ранее, или даже рассмотреть возможность добавления templatetag в ваше приложение, чтобы добавить модули ES6 в ваш шаблон..

0 голосов
/ 21 мая 2019

В своем пользовательском шаблоне 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 %}
...