我有一个这个领域的模型:
image=models.ImageField(upload_to='company-category')
company-category
是uploads
文件夹中的文件夹,但我想将图片上传到模板目录。我想这样访问我网站的用户无法访问图片并下载它们。
:
TEMPLATE_DIRS = (
"C:/ghoghnous/HubHub/Theme"
)
我该怎么做?
答案 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')
如果您使用此功能,图像将上传到文件夹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
我建议您使用第二种方法,因为不建议在模板文件夹中保存图像。
答案 1 :(得分:0)
根据Django良好实践,模板目录不是存储媒体的首选位置。
此外,您在网页上显示的任何图像都将具有路径并可以下载。有些人使用脚本来阻止正确的点击和类似的东西,但据我所知,源代码总是给你图像路径。
答案 2 :(得分:0)
哦,我想你想把文件上传到临时文件夹,然后用它做点什么。对?
您需要覆盖clean_image
中的方法forms
。然后,您可以使用File storage