2012-03-12 100 views
0

我已經安裝了django-admin-tools並在我的項目 文件夾中創建了dashboard.py。Django:django-admin-tools:添加自定義js

在這個文件中我已指定媒體類:

#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')), 

) 

任何人看到任何明顯的錯誤?我沒有看到在firebug中下載的jQuery文件是 。我認爲jquery也是admin_tools的一部分, 但這個錯誤消息似乎表明它不是?

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

任何幫助表示讚賞。

+0

檢查你的html源代碼。 – 2012-03-13 06:01:09

+0

你是什麼意思?該代碼的作品,如果我「手動」包括jQuery。沒有管理工具,一切工作也是如此... – 2012-03-13 07:06:21

+0

請參閱下面的eschler答案。 – 2012-03-14 13:03:19

回答

0

你說得對,jquery已經包含在admin_tools中。除非你需要更新的版本,否則使用隨附的版本可能會更好。或者即使沒有媒體課程,它也不加載?

您的設置中存在的問題是您從外部主機加載jquery。但是,如果您查看注入文件的admin_tools中的dashboard.html模板,您也會注意到它會在每個js文件的前面加上{{ media_url }}。結果是一個無效的包括像'/media/http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'。這顯然是admin_tools的一個問題,我會提交一個錯誤報告。

作爲解決方法,您可以刪除媒體類並覆蓋dashboard.html以包含外部文件。

1

我認爲這可能是因爲jQuery函數已在django admin中重命名以避免衝突。
如果你能看到被加載在查看源代碼jQuery的文件,並在控制檯輸入$產生的錯誤,然後嘗試django.jQuery
如果你想用$你需要做的是這樣$ = Django的.jQuery,然後在腳本的底部,將其放回django.jQuery
請參閱https://github.com/philippbosch/django-geoposition/blob/master/geoposition/static/geoposition/geoposition.js作爲例如。

+0

沒錯,這個作品! – yablokoff 2013-04-06 19:26:42