如何在Django管理页面插入<script>标签

2 投票
1 回答
709 浏览
提问于 2025-04-18 12:04

我想让JavaScript获取一个在Django后台上下文中设置的变量。这里已经有一个叫做'original'的对象,它就是我需要的模型对象。但是,我需要把这个对象的名字放到一个我可以在JavaScript中使用的变量里。

<script>
  var className = "{{ original.__class__.__name__ }}";
</script>

我有一个Inline和一个模型Admin可以用来处理这个问题,但Media类只能处理文件。我需要的是一种方法,可以把上面的代码插入到一个后台模板中,而不需要覆盖这个模板。覆盖模板的话,我需要知道我的代码具体会放在哪里,但我并不知道,因为这段代码会是一个包的一部分。

有没有办法动态更新TEMPLATE_DIRS这个设置对象?如果可以的话,我就能用模板方法来解决我的问题。

1 个回答

1

实现这个目标的一种方法是重写你的管理模板。首先,你需要创建一个虚拟环境,然后在里面安装Python和Django。

接下来,你可以通过打开Python控制台来找到你的Django路径,输入:python

在控制台中输入以下内容:

import sys
sys.path = sys.path[1:]
import django
print(django.__path__)

这会显示出你Django安装的路径。如果你在使用虚拟环境,通常路径会像这样:

~/myproject/env/lib/pythonX.X/site-packages/django

所以,管理模板的位置是:

~/myproject/env/lib/pythonX.X/site-packages/django/contrib/admin/templates/admin

在这里,你可以像在普通的Django模板中一样添加脚本标签。

需要注意的是,使用虚拟环境只是一个建议。你不一定要使用它,但通常这样做更好,因为它只会影响你正在使用的项目,而不会影响所有的Python/Django项目。

撰写回答