2012-06-05 144 views
0

的圖像可以上傳到文件「上載」其中位於mysite的文件,這裏是我的代碼 setting.py顯示圖像模板Django的

MEDIA_ROOT = 'C:/Python26/mysite/upload/media/' 
MEDIA_URL = '/media/' 

在url.py

urlpatterns = patterns('', 

    url(r'^media/(?P<path>.*)$', 'django.views.static.serve', 
      {'document_root': settings.MEDIA_ROOT,}), 
) 

在模板

<img src="{{MEDIA_URL}}/{{pic}}" alt="Profile Picture" width="200"/> 

但是,仍沒有圖像的網站,b顯示它確實存儲在上傳文件中。有人可以幫助我呢?由於

+1

當你的HTML渲染'src'的值是什麼? – dm03514

+0

它是Profile Picture
user1334100

+0

這是圖像的正確位置 – user1334100

回答

1

考慮:

MEDIA_URL = '/media/' 

而下面的模板代碼:

<img src="{{MEDIA_URL}}/{{pic}}" alt="Profile Picture" width="200"/> 

圖像0​​不可能是/upload/Desert.jpg。路徑應該從/media/開始。 MEDIA_URL可能未定義,並且pic的值爲upload/Desert.jpg。如果是這種情況,那麼你可能會錯過媒體模板上下文處理器。更改TEMPLATE_CONTEXT_PROCESSORS到:

TEMPLATE_CONTEXT_PROCESSORS = (
    ... 
    'django.core.context_processors.media', 
) 

,這將使你的模板上下文中可用MEDIA_URL。然後,您還需要後,刪除斜線,否則你會兩個結束(MEDIA_URL以斜線結尾),即:

相反的:

{{ MEDIA_URL }}/{{ pic }} 

用途:

{{ MEDIA_URL }}{{ pic }} 

UPDATE

如果你仍然不是獲取的值,那麼你可能沒有使用RequestContext。您必須將視圖的上下文包裝在RequestContext中,以便模板上下文處理器能夠完成它們的工作。

如果您使用render_to_response,則:

return render_to_response('template.html', { ... context here ... }, context_instance=RequestContext(request)) 

如果你使用Django 1.3+,你可以只使用render方法,它會自動爲你做到這一點:

return render('template.html', { ... context here ... }) 
+0

我做到了,但它出來了Profile Picture
user1334100

+0

謝謝:)我認爲{{MEDIA_URL}}上傳/,我想知道是否有任何問題與MEDIA_ROOT ='C:/ Python26/mysite/upload/media /' ,但我不明白 – user1334100

+0

看起來像'MEDIA_URL'仍然是未定義的。唯一的另一個可能的問題是你沒有使用'RequestContext'。見上面的更新。 –