2014-02-25 45 views
0

背景:服務裏面js文件相對路徑圖像在Django

我setting.py

STATIC_ROOT = '' 
STATIC_URL = '/static/' 
STATICFILES_DIRS = (
    ('assets/css','/var/www/mongo_conprima/static_files/css/'), 
    ('assets/js','/var/www/mongo_conprima/static_files/js/')) 
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder', 
    #'django.contrib.staticfiles.finders.AppDirectoriesFinder', 
# 'django.contrib.staticfiles.finders.DefaultStorageFinder', 
) 

我能服務器靜態文件模板這樣

<script src="{% static "assets/SlickGrid-master/lib/firebugx.js" %}"></script> 

問題: 我的js文件中有圖像,其相對路徑未能OAD這樣

/var/www/mongo_conprima/static_files/SlickGrid-master/slick.formatters.js: 
    55 
    56 function CheckmarkFormatter(row, cell, value, columnDef, dataContext) { 
    57:  return value ? "<img src='/images/tick.png'>" : ""; 
    58 } 
    59 })(jQuery); 

錯誤: 我得到以下控制檯

GET http://127.0.0.1:8000/images/tick.png 404 (NOT FOUND) slick.grid.js:2567 

回答

0

使用你的函數裏面的靜態標籤和錯誤,所以的JavaScript應該像

function CheckmarkFormatter(row, cell, value, columnDef, dataContext) { 
    return value ? "<img src='{% static "/images/tick.png" %}'>" : ""; 
} 

靜態標籤將爲您提供完整的靜態文件路徑。

+0

我無法繼續在所有js文件中更改網址 –

1

你或許可以使用全局變量在你的模板,並在您的JS文件使用它

模板:

<html> 
<script> 
    var GLOBAL_PATH = '{{ STATIC_PATH }}'; 
</script> 
</html> 

JS:

return value ? "<img src='" + GLOBAL_PATH + "/tick.png'>"; 
0

一對夫婦的解決方案對此問題已在以下問題中得到解答:https://stackoverflow.com/a/6574670/2487431

您可以向Web服務器添加一個配置,該配置將無形地將路徑重定向到正確的靜態路徑,或者您可以使用urls.py添加重定向。

該鏈接深入解釋瞭如何做到這一點。希望這有助於未來的人。