在 django 中覆盖管理模板以添加自定义 javascript
Posted
技术标签:
【中文标题】在 django 中覆盖管理模板以添加自定义 javascript【英文标题】:Overriding admin template in django to add custom javascript 【发布时间】:2014-02-11 11:17:33 【问题描述】:我有一个模型,我需要在其管理表单中添加一些自定义 javascript 处理。
我已经通过以下指南尝试了一个实现: https://docs.djangoproject.com/en/1.5/ref/contrib/admin/#overriding-admin-templates
所以我创建了自己的change_form.html
,并覆盖了object-tools-items
并将我的js 放在那里,但是当我转到更改表单时我没有看到它。然后,只是作为测试,我直接把它放到了真正的djangochange_form.html
中,但仍然没有。
然后为了查看是否正在使用该模板,我对其进行了更改 - 添加了数据,创建了语法错误,但仍然没有任何效果。所以看起来这个模板根本没有被使用。我寻找change_form.html
来查看它是从哪里渲染的,我在contrib/admin/options.py:render_change_form() 中找到了它,所以我在那里设置了一个断点,但它从未被命中。但是 HTML 看起来确实像是来自那个模板。
谁能给我一些指导吗?
【问题讨论】:
Django 调试工具栏将准确地告诉您页面是如何构建的,以及大约一百万个其他必不可少的东西。 github.com/django-debug-toolbar/django-debug-toolbar django 调试工具栏绝对是非常酷和有用的。但是当我安装它时,它也下载并安装了 django 1.6(我运行的是 1.5)幸运的是它安装在不同的地方,但现在我的默认版本是 1.6,我需要运行 1.5。不过还是谢谢你,我相信它会派上用场的。 安装旧版本或使用pip install --upgrade-strategy="only-if-needed"
避免在不需要时自动升级依赖项
【参考方案1】:
您无需覆盖管理模板即可将自定义 JavaScript 添加到管理页面。
您可以像这样添加资产:
https://docs.djangoproject.com/en/dev/topics/forms/media/#assets-as-a-static-definition
然后您只需要覆盖管理站点使用的表单。
【讨论】:
谢谢!这看起来正是我需要的。我创建了一个表单来覆盖管理表单: class MyCategoryAdminForm(forms.ModelForm): class Meta: model = Category class Media: js = ('CategoryAdmin.js') 但似乎没有选择 CategoryAdmin.js,而是将其拆分为它为每个字符查找一个文件: 。 . 我发现了这个问题 - 它需要一个 js 元组,所以添加一个逗号可以解决这个问题。现在我只需要让脚本工作;-)以上是关于在 django 中覆盖管理模板以添加自定义 javascript的主要内容,如果未能解决你的问题,请参考以下文章
有没有一种简单的方法可以完全自定义 Django 管理站点以显示不是字段的变量?
Django 如何将自定义变量传递给上下文以在自定义管理模板中使用?