2012-07-01 37 views
0

我正在製作一個簡單的Django項目,但我無法獲取任何圖像以顯示在我的頁面中。無法獲取圖像以在Django(1.3)項目中顯示

https://docs.djangoproject.com/en/1.3/howto/static-files/#basic-usage狀態

基本用法Django文檔把你靜態文件的地方,staticfiles會發現 他們。

默認情況下,這表示在您的INSTALLED_APPS的應用程序的靜態/子目錄中。

您的項目可能還會擁有與 並不綁定的特定應用的靜態資產。 STATICFILES_DIRS設置是一個文件系統目錄的元組,用於檢查何時加載靜態文件。這是一個 默認爲空的搜索路徑。請參閱STATICFILES_DIRS文檔 如何擴展此列表的其他路徑。

此外,有關靜態文件如何找到您的文件的詳細信息,請參閱STATICFILES_FINDERS 設置的文檔。

確保django.contrib.staticfiles包含在您的 INSTALLED_APPS中。

地方發展,如果你使用的runserver或添加 staticfiles_urlpatterns到你的URLconf,你與安裝完成 - 您的靜態文件將自動默認送達(用於 新建項目)STATIC_URL的/靜態的/。

您可能需要在模板中引用這些文件。該 最簡單的方法是使用包括上下文處理器,其允許 模板代碼,如:

參見參考 靜態文件中的更多細節,包括使用模板標記的替代方法 模板。

所以我這樣做在settings.py:

STATICFILES_DIRS = (
    '/home/abc/django/project1/media/', 
) 

並啓用'django.contrib.staticfiles', 在媒體,我有一個文件夾IMG,裏面有各種各樣的jpg文件。

在我的模板,我有這樣的線路之一:

<img src="{{STATIC_URL}}img/{{var}}.jpg"> 

當我通過我的觀點傳遞給變種這個模板。

HTML頁面似乎將此標記渲染爲"<img src="img/abc.jpg">其中var =「abc」。 但我的瀏覽器拒絕顯示圖像。我做錯了什麼?

回答

3

你看到的文檔中的部份部分:

如果{{ STATIC_URL }}在你的模板不工作,致使模板時,你很可能不使用的RequestContext。

您是否也在您的視圖中使用RequestContext來呈現模板?

+0

我確實嘗試過,但它也沒有工作。我的settings.py根本沒有「TEMPLATE_CONTEXT_PROCESSORS」。手動添加它沒有任何區別。但是使用「{%load static%} 」會顯示圖像。但我不明白爲什麼第一種方法不起作用。好吧。 – user1265125

+0

你能展示你的觀點嗎?默認情況下,TEMPLATE_CONTEXT_PROCESSORS不在settings.py中。當你添加django.core.context_processors.static時,它也不起作用。你應該在你的setings.py整個名單:TEMPLATE_CONTEXT_PROCESSORS =( 'django.core.context_processors.debug', 'django.core.context_processors.i18n', 'django.core.context_processors.media', 「 django.core.context_processors.static', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ) –

0

這是一種替代方法:

settings.py:

import os 
PROJECT_DIR = os.path.dirname(__file__) + '/../' 
STATIC_ROOT = os.path.join(PROJECT_DIR, 'media/') 
STATIC_URL = '/media/' 

在模板:

{% load staticfiles %} 
<img src="{% static img/foo.jpg %}" /> 

如果你需要傳遞一個變量,使用前綴方法:

{% load staticfiles %} 
<img src="{% get_static_prefix %}img/{{var}}.jpg" />