2014-02-23 130 views
0

我想顯示一個圖像與src等於一個絕對路徑。這是我在模板中做的Django - 絕對路徑圖像不顯示

<img src="/home/userName/Documents/app/userPhotos/1/uploadedPhotos/imageName.png" alt="" /> 

並且它不顯示出來。我確信這是正確的絕對路徑。有什麼我需要做的,在我的settings.py文件中說,能夠使用絕對路徑?我需要

import os 

在我的模板中?

編輯:

萬一有幫助,當我運行的服務器,然後轉至調用模板(/網址displayImages /,這是它在我的終端說:

[23/Feb/2014 12:07:27] "GET /displayImages/ HTTP/1.1" 200 413 
[23/Feb/2014 12:07:27] "GET /home/userName/Documents/app/userPhotos/1/uploadedPhotos/imageName.png HTTP/1.1" 404 2993 

回答

3

正如Daniel在他的回答中所寫的,你不應該使用絕對路徑爲您的網站上的任何內容。這導致了安全關心和...不工作。當瀏覽器看到/absolute/path/img.png時,它會從您的網站的根目錄開始搜索此路徑。所以,這可以成爲/home/userName/Documents/app/absolute/path/img.png,它不存在。

正確的做法是:

  • 閱讀doc :)
  • 添加(或使用)定義未settings.py的settings.STATIC_URL。默認路徑是您的應用程序文件夾中的static /文件夾。
  • 使用{% load staticfiles %}{{ static "relative/path/file.ext" }}在模板
+0

hm對,我有我的靜態文件設置。事情是,我正在創建一個圖像託管應用程序,所有用戶都在上傳一大堆圖像,所以我認爲如果我將圖像保存在應用程序目錄之外的文件夾中會更好,是不是會更好?或者,如果我的應用程序目錄/文件夾已經結束,例如用戶上傳的10,000個大型jpeg文件,它在性能或其他重要方面是否會產生影響? – user2719875

+1

你可以把你的靜態文件放在你想要的位置。只要您設置了settings.STATIC_URL,並且您實際在模板中使用它,它就會按照它的樣子運行。至於表現,我敢肯定它不會改變任何事情。 – Nil

+0

hm好的兩個問題。 -1-我的STATIC_URL只是/靜態/,我定義Django應該在STATICFILES_DIRS中尋找靜態文件的位置..不是說它應該如何完成?和-2-如此,如果我的靜態文件夾不在項目目錄中嗎?例如,如果我的STATICFILES_DIRS是/ home/static /,那麼可以嗎?或者這也不是首選,它是否也會導致安全問題? – user2719875

2

你爲什麼要在你的模板中使用一個文件路徑?你應該使用一個URL,絕對的或相對的:這個圖像的服務地址

+0

我創建一個圖片託管應用程序在所有用戶要做的就是上傳一些圖片,所以我想它會更好,如果我的文件夾中保存外的圖像的應用程序目錄,會不會更好?或者,如果我的應用程序目錄/文件夾已經結束,例如用戶上傳的10,000個大型jpeg文件,它在性能或其他重要方面是否會產生影響? – user2719875