2011-04-21 98 views
0

我有一個名爲mysite的新django項目。 mysite內部是一個名爲static的文件夾,我的所有圖像都在這裏。鏈接Django中的圖像

mysite的內部也有名爲index.html具有以下基本代碼文件模板文件夾:

<html> 
<head></head> 
<body><img src = WHAT GOES HERE?? /> 
</html> 

我有我的mysite文件夾這個views.py文件:

from django.shortcuts import render_to_response 
def index(request): 
    return render_to_response('index.html',) 

在我的settings.py文件中,STATIC_URL ='/ static /'

什麼是應該在我的img標籤中正確引用靜態圖像文件的確切文本(注意:我沒看鏈接到文檔)。我是否需要更改任何文件夾/設置結構?謝謝。

我已經添加了以下標籤:
< IMG SRC = 「{{STATIC_URL}} logo.jpg」/>

但是,它仍然不會加載 - 這似乎是要正確路徑(瀏覽器中的圖像路徑爲127.0.0.1:8000/static/logo.jpg)。我需要更改什麼才能正確加載?我已經檢查過以確保圖像位於該位置。

UPDATE:這是怎麼了,我終於得到它的工作:

if settings.DEBUG: 
    urlpatterns += patterns('', 
     (r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root':  sttings.MEDIA_ROOT}), 
) 

(我使用的static_url的MEDIA_URL代替)。有沒有更簡單的方法來做到這一點?

回答

0

David542,

你的結構應該如下所示。

MyProject 
    \MySite 
     \static 

當您使用runserver時,將爲此靜態文件夾提供服務。當您將工作轉移到生產環境中時,您會想要使用django的./manage.py collectstatic,並確保在您settings.py文件中指定的靜態url上提供靜態媒體。因此,如果您的靜態文件夾中有圖像,則應該可以參考/static/some_image.png

靜態文件在版本1.3之前並未包含在Django中。如果您的年齡大於1.3,可以解釋您目前的設置不適合您的原因。 (我猜這是你的問題。)

希望這會有所幫助。

編輯:如果通過輸入你的路徑服務都爲你和你舒適的工作,你應該確實使用其他答案說,並使用{{ STATIC_URL }}hi.jpg就好像你選擇改變你的靜態url,你將不必改變你的模板以匹配,因爲他們會自動工作。

+0

@ wilbbe01我的Django版本是... >>> django.VERSION (1,3,0,'final',0) – David542 2011-04-21 01:27:34

+0

您是否使用內置的'manage.py runserver'? – wilbbe01 2011-04-21 01:28:33

+0

你的形象有什麼權限? – wilbbe01 2011-04-21 01:29:26

0

如果圖像被稱爲 「hi.jpg」,它應該是這樣的:

IMG SRC = 「{{STATIC_URL}} hi.jpg

這將解決到一個文件上傳到STATIC_URL目錄,在你的榜樣,這將是:

/static/hi.jpg

+0

我已添加以下標籤:。但是,它仍然無法加載 - 它似乎正在進入正確的路徑(瀏覽器中的圖像路徑顯示爲http://127.0.0.1:8000/static/logo.jpg)。我需要更改什麼才能正確加載?我已經檢查過以確保圖像位於該位置。 – David542 2011-04-21 01:08:34

+0

我不確定什麼「不加載」的意思,具體而言。一個好的測試是,在服務器運行時,直接轉到url,在這種情況下是「http://127.0.0.1:8000/static/logo.jpg」。你看到圖像了嗎?如果你不這樣做,你還沒有正確設置靜態託管。 – mattv 2011-04-21 21:33:47