Django:django-admin-tools:添加自定义js

时间:2012-03-12 19:37:37

标签: django django-admin django-admin-tools

我已经安装了django-admin-tools并在我的项目中创建了一个dashboard.py 文件夹中。

在此文件中,我指定了一个媒体类:

#myproject/dashboard.py 
class Media: 
        css = ('',) 
        js = ('http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/ 
jquery.min.js',) 

在我的设置中,我有:

#settings.py
# admin_tools 
ADMIN_TOOLS_INDEX_DASHBOARD = 
'myproject.dashboard.CustomIndexDashboard' 
ADMIN_TOOLS_APP_INDEX_DASHBOARD = 
'myproject.dashboard.CustomAppIndexDashboard' 

我的网址配置如下:

#urls.py
... 
urlpatterns+= patterns('', 
        url(r'^admin_tools/', include('admin_tools.urls')), 
        url(r'^admin/', admin.site.urls), 

        url(r'', include('feincms.urls')), 

) 

任何人都会看到任何明显的错误?我没有看到jquery文件 在firebug中下载。我假设jquery也是admin_tools的一部分, 但是这个错误信息似乎表明它不是?

Uncaught TypeError: Property '$' of object [object DOMWindow] is not a 
function 

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

我认为这可能是因为jjang函数已在django admin中重命名以避免冲突。
如果你可以在view-source中看到正在加载的jquery文件,并且在控制台中输入$会产生该错误,那么试试django.jQuery
如果你想使用$,你需要做一些像$ = django.jQuery,然后在你脚本的底部,把它放回到django.jQuery
请参阅https://github.com/philippbosch/django-geoposition/blob/master/geoposition/static/geoposition/geoposition.js作为例如。

答案 1 :(得分:0)

你是对的,admin_tools已经包含了jquery。除非您需要更新的版本,否则最好使用附带的版本。或者即使没有Media类也不加载?

您的设置中存在的问题是您从外部主机加载jquery。我也希望这可以工作,但是,如果您查看注入文件的admin_tools中的dashboard.html模板,您会注意到它为每个js文件添加了{{ media_url }}。结果是无效的包含'/media/http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'。这显然是admin_tools的问题,我会提交错误报告。

作为一种解决方法,您可以删除Media类并覆盖dashboard.html以包含外部文件。