你只能在“首页”管理页面上加载自定义的
js
文件。*
我的回答解释了如何在Django中加载CSS和JavaScript文件。
例如,将
BASE_DIR / 'templates'
设置为
DIRS在
TEMPLATES中,并将
BASE_DIR / 'static/'
设置为
STATICFILES_DIRS在
settings.py
中,如下所示,这样Django就可以识别
django-project
下的
templates
和
static
文件夹。*
我的答案解释了如何设置Django模板,我建议按照
我的答案设置
whitenoise以禁用浏览器缓存Django的静态文件:在
settings.py
中,如下所示:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
BASE_DIR / 'templates'
],
...
},
]
...
STATIC_URL = 'static/'
STATICFILES_DIRS = [
BASE_DIR / 'static/'
]
然后,在
static/admin/js/
中创建
custom.js
,并将
django/contrib/admin/static/admin/index.html
中的
index.html从您的虚拟环境复制到
templates/admin/
中,如下所示:
django-project
|-core
| └-settings.py
|-app1
|-app2
|-static
| └-admin
| └-js
| └-custom.js # Here
└-templates
└-admin
└-index.html # Here
然后,将
alert("Hello World");
设置为
custom.js
,如下所示:
# "static/admin/js/custom.js"
alert("Hello World");
然后,在
index.html
中的
{% block sidebar %}
之后设置
custom.js
,如下所示:
{% block sidebar %}
{
<script src="{% static 'admin/js/custom.js' %}" defer></script>
{
<div id="content-related">
现在,
Hello World
只显示在
Home
管理页面上,如下所示:
![enter image description here](https://istack.dev59.com/y3PcD.webp)
此外,您可以在所有管理员页面上加载custom.js
。
因此,请将位于虚拟环境中的django/contrib/admin/static/admin/base.html
的base.html复制到templates/admin/
,如下所示:
django-project
|-core
| └-settings.py
|-app1
|-app2
|-static
| └-admin
| └-js
| └-custom.js
└-templates
└-admin
└-base.html # Here
然后,在`base.html`中在``之后设置`custom.js`,如下所示,然后在所有管理员页面上显示`Hello World`。
<title>{% block title %}{% endblock %}</title>
<link rel="stylesheet" href="{% block stylesheet %}{% static "admin/css/base.css" %}{% endblock %}">
{
<script src="{% static 'admin/js/custom.js' %}" defer></script>
{
{% block dark-mode-vars %}
<link rel="stylesheet" href="{% static "admin/css/dark_mode.css" %}">
小心,django/contrib/admin/static/admin/js/ 包含 Django Admin 的 js
文件,因此您不应在其中使用相同的文件名添加自定义的 js
文件到 Django Admin,除非您需要覆盖它们。
运行下面的代码可以将 Django 项目中的所有静态文件收集到 static
文件夹中,而不会删除自定义和被覆盖的 js
文件。
python manage.py collectstatic
(function ($) { ... })(django.jQuery);
来包装我的代码,我会得到一个“引用错误:django未定义”的错误提示。 - Cloud Artisanstemplates/admin/index.html
中没有改变任何内容。 - EugZol./template/admin/<app_name>/base_site.html
。该文件的第一行是{% extends "admin/base_site.html" %}
。<app_name>
是项目中一个子文件夹的名称,在其中我放置了所有管理员模型。希望这可以帮到你。 - EugZol