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 都重构为模块化实现,不再暴露全局的弹窗相关工具函数,原有依赖全局函数的绑定逻辑会直接失效。
修复方案
- 手动补充
.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; }
- 手动实现旧版
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; }
- 若该功能部署在Django admin后台内,也可直接引入admin自带的弹窗模块替代自定义实现,无需额外重写函数。
内容的提问来源于stack exchange,提问作者Snehal
相关产品推荐
相关产品推荐

