如何在Django admin home中加载自定义JS文件?

Clo*_*ans 14 javascript python django

我有一个大量定制的Django管理员,为我的每个ModelAdmins加载一个自定义JS文件非常简单:

class MyModelAdmin(admin.ModelAdmin):
    class Media:
        js = ('js/admin/mymodel.js',)
Run Code Online (Sandbox Code Playgroud)

但是我如何为管理"主页"执行此操作,其中列出了我的所有管理模型?

更新#1:修改我的问题,因为如果我不能有效地包含Django的jQuery,下面的解决方案就不那么有用了.那么,我如何在JS文件中包含Django的jQuery?如果我用我的代码包装(就像我在其他的ModelAdmin JS文件中那样):

(function ($) { //... })(django.jQuery);
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ReferenceError:未定义django.

谢谢.

更新#2:我能够通过以下答案成功地包含Django的jQuery:https://stackoverflow.com/a/10584539/585783

Sim*_*ser 19

您可以templates/admin/index.html在块中覆盖并添加JavaScript extrahead:

{% extends "admin/index.html" %}

{% block extrahead %}
    # add a <script> tag here with your JavaScript
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

  • 上面的解决方案将覆盖额外块中包含的所有代码,这可能是"ReferenceError:django未定义"错误的原因.如果在`{%block extrahead%} ... {%endblock%}中添加`{{block.super}}`,则保留现有代码. (4认同)
  • 这不起作用。将模板添加到“templates/admin/index.html”不会改变任何内容。 (3认同)