我有這個領域的典範:上傳圖片到模板目錄
image=models.ImageField(upload_to='company-category')
company-category
是uploads
文件夾中的文件夾,但我想上傳圖片到模板目錄。我認爲,訪問我的網站這樣用戶無法訪問圖像並下載它們。
在設置:
TEMPLATE_DIRS = (
"C:/ghoghnous/HubHub/Theme"
)
我該怎麼辦呢?
我有這個領域的典範:上傳圖片到模板目錄
image=models.ImageField(upload_to='company-category')
company-category
是uploads
文件夾中的文件夾,但我想上傳圖片到模板目錄。我認爲,訪問我的網站這樣用戶無法訪問圖像並下載它們。
在設置:
TEMPLATE_DIRS = (
"C:/ghoghnous/HubHub/Theme"
)
我該怎麼辦呢?
這裏我給出了兩個解決方案。你問的那個,然後是我的建議。
使用以下代碼將上傳位置設置爲您的模板文件夾。
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.get
或objects.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
我你使用第二種方法,因爲在模板文件夾保存圖像不勸建議。
根據Django最佳實踐,模板目錄不是存儲媒體的首選位置。
此外,您在網頁上顯示的任何圖像都將具有路徑並可以下載。有些人使用腳本來停止右鍵點擊和這樣的東西,但據我所知,源代碼總是給你圖像路徑。
噢,我想你想把文件上傳到一個臨時文件夾,然後用它做點什麼。對?
您需要覆蓋forms
中的方法clean_image
。那麼你可以用你想要的任何路徑編寫自己的代碼File storage
我不明白用戶如何訪問上傳文件夾中的文件?誰是用戶?解釋得很清楚。 – arulmr
我編輯了這個問題 –