2017-06-05 74 views
1

我想在django的管理员面板中添加一个简单的脚本。我从doc下面这个例子,当我这样做哪些工作:将css/js文件添加到管理面板中的主站点django

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

admin.site.register(Article, ArticleAdmin) 

my_code.js(其中居住在STATICFILES_DIRS),当我打开“文章”,在管理员的面板链接(被执行所以这将是例如url:localhost:8000/admin/news/article/

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

+1

您应该考虑自定义管理模板来实现此目的。 –

回答

1

您是否试图让您的自定义JavaScript显示在所有管理页面上?那么最好的办法是override默认管理员templatte。

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

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

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

+0

工作,谢谢!我希望会有一个更简单的解决方案 – Tom

+0

很高兴已经帮助 – e4c5

+0

我想知道如果这是可能的覆盖管理的模板,而不是复制来实现在这里https://docs.djangoproject.com/en解释/1.11/ref/contrib/admin/#overriding-vs-replacing-an-admin-template据我所知,它不是 – Tom

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/在页脚后插入脚本。

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