2012-09-12 38 views
0

我有這個領域的典範:上傳圖片到模板目錄

image=models.ImageField(upload_to='company-category') 

company-categoryuploads文件夾中的文件夾,但我想上傳圖片到模板目錄。我認爲,訪問我的網站這樣用戶無法訪問圖像並下載它們。

在設置:

TEMPLATE_DIRS = (
    "C:/ghoghnous/HubHub/Theme" 
) 

我該怎麼辦呢?

+0

我不明白用戶如何訪問上傳文件夾中的文件?誰是用戶?解釋得很清楚。 – arulmr

+0

我編輯了這個問題 –

回答

1

這裏我給出了兩個解決方案。你問的那個,然後是我的建議。

使用以下代碼將上傳位置設置爲您的模板文件夾。

from django.conf import settings 

image=models.ImageField(upload_to = settings.TEMPLATE_DIRS[0]) 

上述代碼將圖片上傳到您的模板目錄。

我的建議:

上傳圖像到您的多媒體文件夾。然後使用MEDIA_URL來允許用戶下載它們。使用下面的代碼來定義它們。

settings.py

MEDIA_ROOT = 'C:/ghoghnous/HubHub/media' 
MEDIA_URL = 'site_media' 

urls.py

from django.conf import settings 
urlpatterns += patterns('', 
    url(r'^site_media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}), 
) 

models.py

class SampleModel(models.Model): 
    image = models.ImageField(upload_to = 'images') 

如果使用這一點,伊馬ges將被上傳到文件夾C:/ghoghnous/HubHub/media/images/。然後使用objects.getobjects.filter來獲取所需的圖像。

record = SampleModel.objects.get(id = 1) 

如果我print record.image,輸出爲images/filename.jpg。 傳遞給你的模板。然後你就可以顯示圖像或提供下載鏈接如下:

<a href="{{ record.image.url }}/" >Download</a>  #Download link 
<img src="{{ record.image.url }}/" />     #To display image 
<a href="/site_media/images/file.jpg" >Download</a> #Download static files 

我你使用第二種方法,因爲在模板文件夾保存圖像不勸建議。

0

根據Django最佳實踐,模板目錄不是存儲媒體的首選位置。

此外,您在網頁上顯示的任何圖像都將具有路徑並可以下載。有些人使用腳本來停止右鍵點擊和這樣的東西,但據我所知,源代碼總是給你圖像路徑。

0

噢,我想你想把文件上傳到一個臨時文件夾,然後用它做點什麼。對?

您需要覆蓋forms中的方法clean_image。那麼你可以用你想要的任何路徑編寫自己的代碼File storage