2013-02-09 103 views
0

我試圖獲取一個背景圖像來顯示在Amazon S3上託管靜態文件。在我base.html文件下面的代碼工作得很好,並發現位於我的S3存儲桶的CSS文件:Django靜態文件相對引用Amazon S3

<link rel="stylesheet" href="{{ STATIC_URL }}css/stylesheet.css" type="text/css" /> 

我的問題是,我的CSS文件中,以下行似乎並沒有找到圖片:

background-image: url("{{ STATIC_URL }}img/GreenBackground.jpg") no-repeat center center fixed; 

我的亞馬遜桶看起來像

/newdjangoapp 
--/admin 
--/css 
----/stylesheet.css 
--/img 
----/GreenBackground.jpg 

我曾嘗試加入周圍的IMG和css目錄額外的「靜態」目錄和文件路徑更新此,我有特里d以下代碼:

background-image: url("{{ STATIC_URL }}../img/GreenBackground.jpg") no-repeat center center fixed; 

甚至

background-image: url("../img/GreenBackground.jpg") no-repeat center center fixed; 

我的靜態URL設置如下:

STATIC_URL = 'http://s3.amazonaws.com/' + AWS_STORAGE_BUCKET_NAME +'/' 

和靜態目錄...

STATIC_ROOT = os.path.join(PROJECT_DIR,'') 

STATICFILES_DIRS = (
     os.path.join(PROJECT_DIR, 'static/'), 
) 

任何幫助這個問題得到很大的解決不勝感激!

+0

你應該在CSS文件中使用相對路徑,就像你最後一個例子:'background-image:url(「 ../img/GreenBackground.jpg「)no-repeat center center fixed;'。當你查看頁面的源代碼時指定的相對路徑是什麼? – 2013-02-09 01:46:07

+0

我認爲你不必使用{{STATIC_URL }}在你的CSS文件只是點(s)只是爲了找到圖像的確切位置 – catherine 2013-02-09 06:48:03

+0

@DanHoerst當我查看源代碼時,它顯示了CSS文件的鏈接,該文件又顯示給我下面一行(參考圖片): 'background-image:url(「../ img/GreenBackground.jpg」)no-repeat center center fixed;' 它應該顯示一個到CSS中圖像的完整鏈接嗎?因爲,對於上面的文件結構,我應該導航出CSS子目錄,進入img子目錄並找到剛剛沒有發生的圖像。 – 2013-02-09 14:13:51

回答

1

也許你應該引用它,因爲你的CSS不知道{{STATIC_URL}}。看看你是如何在你的django settings.py文件中定義靜態的(在我的例子中是「/ static /」),然後像在css文件中那樣引用靜態文件,而不是{{STATIC_URL}},讓你的引用和你一樣在你的settings.py文件中創建(在我的情況下,這將是「/ static/css ...」)

+0

謝謝傑夫! – Erika 2013-02-09 13:21:19

+0

@JeffBauer所以在我的情況下(只使用項目目錄作爲靜態根目錄,Amazon存儲區作爲我的靜態URL)是否必須從項目根目錄一直導航到圖像文件?即appname/static/img/GreenBackground.img,還是我不能利用這個事實:我的CSS文件與我的圖像位於同一子目錄中? – 2013-02-09 14:19:44