我正在尝试在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
呢?
答案 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),因此它会在页脚标记之后添加脚本。