将css / js文件添加到管理员面板django中的主站点

时间:2017-06-05 22:27:59

标签: python django django-admin

我正在尝试在django的管理员面板中添加一个简单的脚本。我正在关注doc中的这个例子,当我这样做时它会起作用:

    class ArticleAdmin(admin.ModelAdmin):
        class Media:
            js = ("my_code.js",)

admin.site.register(Article, ArticleAdmin)

my_code.js(生活在STATICFILES_DIRS)会在我打开"文章"管理员面板中的链接(因此这将是示例网址:localhost:8000/admin/news/article/

但是,我希望它在主站点中执行,就像我登录管理员面板后一样(这将是url:localhost:8000/admin/)。我在哪里必须插入class Media呢?

2 个答案:

答案 0 :(得分:1)

您是否尝试在所有管理页面上显示自定义JavaScript?然后,最好的办法是override默认的admin templatte。

查看您的django安装,找到django/contrib/admin/templates/admin/base.html在项目文件夹的templates/admin中复制它。然后只需将以下内容添加到html。

<script scr="my_code.js" type="text/javascript"></script>

然后js将在所有管理页面上可用。

答案 1 :(得分:0)

我发现了另一种覆盖而非替换的方法,如here中所述。

如果您将文件base.html放入templates/admin

{% extends "admin/base.html" %}
{% load static %}
{% block footer %}
    {{ block.super }}
    <script type="text/javascript" src="{% static 'my_code.js' %}"></script>
{% endblock  %} 

这将在脚注位于localhost:8000/admin/后插入脚本。

我在这里&#34;覆盖&#34; the base.html。但由于我使用的是.super(解释here),因此它会在页脚标记之后添加脚本。