2012-08-17 26 views
0

我有一些jQuery代碼,當用戶單擊按鈕時,它可以切換按鈕的活動圖像和非活動圖像。當我只是靜態地用相對路徑運行一切時,它工作正常。當使用Django靜態文件動態設置圖像時,只有絕對路徑與jquery協同工作

但是,一旦我將它移植到我的django開發框中,如果我通過jquery設置了它的相對路徑,單擊該按鈕將無法加載所需的圖像。所有其他靜態圖像都通過相對路徑的CSS來提供良好的服務,但是如果我通過jquery在文檔加載中設置相對路徑,例如,它不起作用。我通過檢查元素確認路徑是相同的,jquery正確設置它們。

在嘗試了20分鐘的各種相對路徑後,我發現設置開發服務器的絕對路徑工作,即「url('http://127.0.0.1:8000/static/img/img.jpg' )我想得到相對路徑,因爲這種方法在靈活性和部署方面有其侷限性

我是否遇到django靜態文件服務的限制?我是否發現了錯誤?中號失蹤?

提前感謝!

+0

當谷歌搜索'Django的相對path'我看到各種方法來獲取路徑。你有沒有嘗試過,他們究竟做得不好?你的JavaScript在哪裏設定路徑? – 2012-08-17 08:35:00

+0

由於不通過模板呈現CSS/JS(但通過{{%static「相對於css或js」%}「的路徑鏈接到html模板中),我不能使用這些,但不需要js/css只是坐在他們的目錄中,你可以使用相對路徑,js在靜態目錄下,它的子文件夾是img,js,font,css,我可以設置一個像css這樣的相對路徑。相關的代碼如下: $('#mybutton')。css('background,「/ img/img.jpg'),但js中的同一個東西(在同一個目錄級別)不起作用。 url('../ img/img.jpg')「); – Newmu 2012-08-17 08:46:37

回答

2

我不知道Django的,但是當你的服務器端框架爲您提供了一種方法根路徑爲t Ø導出到JavaScript在主文檔中:

<script> 
templateRootPath = {{% static "path to your template dir" %}} 
</script> 

,並再使用酌情:

$('#mybutton').css('background,"url('"+templateRootPath+"/img/img.jpg')"); 
+0

是的,那會工作,謝謝你! – Newmu 2012-08-17 08:56:22