Django 管理员 - jQuery 命名空间
Posted
技术标签:
【中文标题】Django 管理员 - jQuery 命名空间【英文标题】:Django admin - jQuery namespace 【发布时间】:2011-11-03 13:14:39 【问题描述】:我正在尝试在我的 Django 管理站点中使用某些 jQuery 插件。
Django 管理员将 jQuery 命名空间设置为 django.jQuery
(以避免冲突)
如果我没有 jQuery 的默认 $
命名空间,插件将无法工作,对吗?
我必须做类似的事情
window.$ = django.jQuery
?
如何以及在哪里可以更改整个管理站点的这个命名空间?
【问题讨论】:
【参考方案1】:我建议您将 jQuery 保留在 django.jQuery 命名空间中,这在将 cms 与可能发生冲突的不同模块一起使用时是一个好主意。 但是你把你的插件包装在这样的里面:
;(function($)
// here $ is only in this scope and so totally inobrusive
// plugin code
)(django.jQuery);
【讨论】:
这可以工作,但每次添加或更新插件时都必须这样做...... :(【参考方案2】:其他人也有类似问题,使用了解冲突功能:http://www.lokkju.com/blog/archives/143
我不确定 Django 使用什么版本,但我认为使用 django 命名空间的意义在于它可以使用自己版本的 jQuery 进行内部操作,但仍然可以让您为自己的工作使用不同的版本.
【讨论】:
最后我使用了我的 jQuery 版本,因为我在花了一个小时之后没有成功重命名命名空间。还是谢谢。【参考方案3】:实际上,大多数插件都需要“jQuery” - 而不是 $ - 才能使用,然后像 dmidz 的回答一样自行提供 $。
因此,插入
var jQuery = django.jQuery;
在您的外部参考之前。如果您要加载一堆第三方 jQuery 插件,请将上面的行放在插件前面的脚本标记中。
另请参阅我五个月前的问题How to provide $ to third-party, external jQuery plugins in Django admin
【讨论】:
我实际上不得不同时做var jQuery = django.jQuery;
和var $ = django.jQuery;
。谢谢
也。谨防。如果另一个插件已经包含它自己的 jQuery,您将覆盖它,并以灾难告终,因为另一个插件现在将丢失...jquery.noConflict 来救援,但总是让我头疼,只是想一想。 ..但是是的,这个解决方案首先会起作用;-)以上是关于Django 管理员 - jQuery 命名空间的主要内容,如果未能解决你的问题,请参考以下文章
Django之url上的include,URL命名和反向解析,命名空间 以及图书管理系统删除功能二合一方法