2011-12-12 48 views
0

全部刪除,Django - 靜態圖片未找到

我在開發模式下運行Django應用程序。我已將靜態文件收集到我項目的/ static/images /目錄中。

在我的模板我試圖鏈接的示例圖像:

<img src="{{ STATIC_URL }}items/no_image.jpeg"/> 
    {{ STATIC_URL }}items/no_image.jpeg 

(底線是用於調試打印)

圖爲帶着一顆破碎的鏈接,底線打印出正確的目錄:

/static/items/no_image.jpeg 

在我的項目中,我有/static/items/no_image.jpeg文件。

在我的settings.py我:

STATIC_ROOT = os.path.dirname(__file__)+'/static/' 
STATIC_URL = '/static/' 

有人能幫忙嗎?

謝謝!

回答

2

發現問題。問題是我使用了錯誤的目錄。當它應該是/ static /時,STATIC_URL被命名爲/ site_media /。改變它,現在一切工作清晰如水...

3

我認爲這是斜線問題。嘗試

STATIC_ROOT = os.path.join(os.path.dirname(__file__), 'static') 
+0

似乎並不是那樣的。試圖做出這種改變,但我仍然得到同樣的錯誤。 –

+0

@VascoPatricio等待,如果你已經將你的文件收集到'/ static/images /'URL中的'images'的位置? – DrTyrsa

+0

那麼,我認爲它是在/靜態/圖像/,正確?我收集了媒體,並在我的項目中創建了文件夾/ static/images /。 –

1

也許你誤解了收集靜態文件。在開發過程中,不需要使用collectstatic命令將它們收集到目標目錄中。這意味着要完成部署

在開發過程中,您只需添加django.contrib.staticfiles應用程序,然後按照here所述指定STATIC_ROOT,STATIC_URL和STATICFILES_DIRS。

然後,在您的基本urlconf中,您需要爲here所述的靜態文件添加url規則。這就是「發展模式」。

在生產模式下,您首先運行collectstatic命令,然後將生成的目錄移動到運行apache(或nginx或其他)的服務器上,並讓他爲該目錄服務uny www.yoururl.com/static/

關於在django中處理靜態文件的全部故事幾乎讓我瘋狂......甚至今天,當我嘗試記住它或解釋它的時候,我還得思考幾分鐘。 : - /如果有時讓你困惑,別擔心。

+0

感謝您的澄清。然而,這裏的問題是當我訪問URL時圖片不可訪問,它應該是(在開發模板時提供靜態文件)。 –

0

我想我最近有一個類似的問題。嘗試將圖像直接放在/ static /而不是/ static/items /中。如果您想直接鏈接到/static/items/sample.jpg,您需要在設置中添加/ static/items /到您的STATIC_ROOT