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 命名空间的主要内容,如果未能解决你的问题,请参考以下文章

XML名命空间

Django之url上的include,URL命名和反向解析,命名空间 以及图书管理系统删除功能二合一方法

如何从默认 Django 模型重命名模型字段?

Django(命名空间)

django url中的实例命名空间和应用程序命名空间有啥区别?

Python中的命名空间和范围