You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django1.9升级至3.1后JavaScript功能异常、+号按钮不显示问题咨询

Django 3.1 版本相关JS与样式机制调整说明

核心变动点

  • Django 2.0 起已逐步废弃 admin 端内置的旧版全局弹窗函数showAddAnotherPopup,到 3.1 版本该函数已被完全移除,原有的弹窗交互逻辑不再默认提供。
  • 原 admin 内置的.add-another类默认样式已被移除,1.9 版本中该类默认绑定了+号背景图、宽高、内边距等属性,空<a>标签可正常显示按钮;3.1 版本无内置对应样式,空标签会直接渲染为不可见的空白元素。
  • 3.1 版本所有 admin 端 JS 都重构为模块化实现,不再暴露全局的弹窗相关工具函数,原有依赖全局函数的绑定逻辑会直接失效。

修复方案

  1. 手动补充.add-another类的样式,保证按钮可见:
.add-another {
  display: inline-block;
  width: 16px;
  height: 16px;
  background: url("/static/admin/img/icon-addlink.svg") no-repeat center center;
  text-indent: -9999px;
  overflow: hidden;
  vertical-align: middle;
  margin-left: 4px;
}
  1. 手动实现旧版showAddAnotherPopup全局函数,兼容原有onclick绑定逻辑:
function showAddAnotherPopup(trigger) {
  const popupName = trigger.id.replace(/^add_/, '');
  const popupWin = window.open(trigger.href, popupName, 'width=800,height=500,scrollbars=yes,resizable=yes');
  popupWin.focus();
  return false;
}
  1. 若该功能部署在Django admin后台内,也可直接引入admin自带的弹窗模块替代自定义实现,无需额外重写函数。

内容的提问来源于stack exchange,提问作者Snehal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 21:39:03