2016-11-27 53 views
1

是否可以顯示本地存儲在django應用程序中的圖像?我目前正在構建一個與Web服務集成的工作流程,並且我動態分析了用戶上傳的數據,然後在本地處理並保存在本地(即不在靜態目錄中)。我現在只是試圖在使其「正式正確」之前建立一些最小可行的東西(我知道我應該將要顯示的圖像存儲在靜態目錄中,但由於它們不是靜態的,因爲用戶可以上傳和刪除他們處理過的數據,所以它並不一定總是在那裏;工作流程目前是Web服務的外部,因此集成它們是我希望在集成後進行產品工作後得到的東西本身可能需要幾個月的時間,而我之前需要做一些簡單的工作)。我想要顯示的圖像存儲在本地(它們是在用戶上傳數據後在工作流程中創建的),並且在生成模板HTML時,我期望的路徑實際上是顯示出來的(例如,瀏覽和查看HTML時,路徑所顯示的路徑圖像局部是我的電腦上),但是,Django的通過了以下錯誤:在Django應用程序中顯示本地圖像

Not Found: /local/path/to/analysis/analysisdirs/img.png 

當我嘗試在本地打開的圖像,他們出現就好了(所以他們實際存在)。有沒有一種方法可以動態添加圖像,以便django只能爲顯示的特定渲染找到它們(即,一旦分析了一批文件,它就會將它們臨時添加到靜態路徑中,然後將這些文件刪除文件被刪除)?

當我去那個應該顯示的圖像的頁面,現在只是用ALT文字圖像的空白區域,當我在看的HTML,它表明:

<img src="/local/path/to/analysis/analysis_dirs/img.png" alt="My Image" height="600" width="700"> 

哪個正是我期待的,但顯然是錯誤的。

我在settings.py如下:

STATIC_URL = '/local/' 

# the directory to place all uploaded graphs and outputs 
SERVER_DIR = "/local/" 

MEDIA_ROOT = os.path.join(SERVER_DIR, 'input_data') 
MEDIA_URL = os.path.join(SERVER_DIR, 'input_data/') 

OUTPUT_DIR = os.path.join(SERVER_DIR, 'path/') 
DATA_FOLDER = os.path.join(SERVER_DIR, "path") 

,我希望會做的工作,但很可惜它不:(

那麼我希望的是,當我呼籲:

context = {'img': '/local/path/to/analysis/analysis_dirs/img.png'} 
render(request, 'myapp/mytemplate.html', context) 

其中template.html有:

<img src="{{ img }}" alt="My Image" height="600" width="700"> 

我將能夠做這樣的事情:

static_media_path += '/local/path/to/analysis/' 

時運行特定的分析,然後在特定的分析被刪除:

static_media_path -= '/local/path/to/analysis/' 

回答

1

我猜你是在本地發展機在調試模式下,你有沒有添加

from django.conf import settings 
from django.views.static import serve 

#at the end of file 
if settings.DEBUG: 
    urlpatterns += [ 
     url(r'^/local/path/to/analysis/(?P<path>.*)$', serve, { 
      'document_root': settings.MEDIA_ROOT, 
     }), 
    ] 

到您的應用程序的urls.py

相關問題